[Powered by Google Translate] [সারি]
[ক্রিস GERBER, হার্ভার্ড বিশ্ববিদ্যালয়]
এটি CS50, CS50.TV]
একটি দরকারী একটি উপাদানের আদেশ সংগ্রহে তথ্য জমা করার জন্য একটি কাঠামো কিউ.
এটা যখন উপাদানের প্রয়োজন অপসারণের জন্য ব্যবহৃত হয়
একই আদেশ হিসাবে তারা যোগ করা হয় নি.
এই ধারণা হিসাবে FIFO, যা প্রথম জন্য একটি, প্রথম আউট আদ্যক্ষরা বলা হয়.
এই মনশ্চক্ষুতে সাহায্য, এটি দরকারী ছবি হতে পারে
একটি একটি দোকান চেকআউটে লাইন.
মানুষ হিসাবে আসে, তাদের লাইন পিছে অপেক্ষা করুন.
কোষাধ্যক্ষ তারপর পালাক্রমে লাগে সামনে কাস্টমারদের ভজনা,
একটি সময়ে যিনি তখন এক লাইন থেকে প্রস্থান করুন.
কম্পিউটার বিজ্ঞান ইন, কিউ 'র সামনে আমরা মাথা হিসাবে দেখুন
এবং লেঙ্গুড় হিসাবে ফিরে.
যখন আমরা একটি অ্যাপ্লিকেশন ব্যবহার করতে পারে একটি উদাহরণ
হয় বর্গ enrollments জন্য একটি waitlist.
হিসাবে আসন বর্গ মধ্যে উপলব্ধ,
ওয়েটিং লিস্টে প্রধান এ ব্যক্তি বর্গ মধ্যে তালিকাভুক্ত সুযোগ প্রদান করা হয়.
>> একটি কিউ নির্মিত কোনো সংগ্রহ ব্যবহার করা যাবে
যে অনুক্রমে তথ্য সঞ্চয় করে, যেমন একটি অ্যারে অথবা একটি তালিকা সংযুক্ত হিসাবে,.
সহ সংগ্রহে সারিতে আইটেম সঞ্চয়,
আমরা যাও কিউ শেষে আইটেম যোগ একটি পদ্ধতি প্রয়োজন,
যা enqueuing বলা হয়,
এবং অন্য কিউ মাথা থেকে একটি আইটেম সরাতে,
যা dequeuing বলা হয়.
এটা প্রায়ই হয় অন্য পদ্ধতি কিউ বর্তমান দ্বারা ফিরে অন্তর্ভুক্ত দরকারী
সেইসাথে একটি পদ্ধতি যদি সারি খালি চেক.
কিভাবে আমরা এর সি পূর্ণসংখ্যার একটি কিউ বাস্তবায়ন হতে পারে যাক,
উপাদান সংগ্রহের জন্য একটি অ্যারে ব্যবহার করে.
প্রথমত, আমরা একটি কাঠামো নামক সারিতে আমাদের ভেরিয়েবল তৈরি রাখা.
আমরা একটি নির্দিষ্ট মাপের পূর্ণসংখ্যা 0 সূচক অ্যারে ব্যবহার করা
যাও উপাদান সঞ্চয়.
আমরা একটি পরিবর্তনশীল নামক মাথা অন্তর্ভুক্ত করা হবে
যে যে উপাদান কিউ প্রধান এ বর্তমানে সূচী সঞ্চয়.
তৃতীয় পরিবর্তনশীল, বলা দ্বারা, ব্যবহার করা হবে
যাও অ্যারের মধ্যে উপাদানের সংখ্যা ট্র্যাক রাখতে.
বিকল্প হিসাবে, আপনি একটি পরিবর্তনশীল নামক লেঙ্গুড় ব্যবহারের বিষয়ে বিবেচনা করতে পারে
শেষ অ্যারের মধ্যে ক্ষেত্রের উপাদান নির্দেশ.
আগে আমরা আরো কোনো কোড লিখুন
আসুন আমাদের নকশা চেষ্টা করে.
এর একটি দ্বারা ফাঁকা 0 অ্যারে দিয়ে শুরু করা যাক,
সঙ্গে মাথা 0 সেট.
এখন let সারিবদ্ধ এর মান 4 - 6, 2, 3, এবং 1.
দ্বারা এখন 4 হতে হবে,
মাথা এবং 0 এ থাকবো.
>> যদি আমরা একটি মান dequeue কি হবে?
আমরা দৈর্ঘ্য 3 কমাতে হবে,
1 মাথা সেট,
এবং মান প্রত্যাবর্তন 6.
যে কোড ভালো চেহারা হতে পারে.
এখানে আমরা dequeue ফাংশন আছে,
থ - - যা সারিতে একটি পয়েন্টার নেয় এবং উপাদান একটি পয়েন্টার,
যা টাইপ int.
প্রথম আমরা কিউ 'র মধ্যে সে বিষয়ে নিশ্চিত হতে অধিক 0 দ্বারা চেক করা,
যে একটি উপাদান dequeued করা হয় সেখানে নিশ্চিত.
তারপর উপাদান অ্যারের মধ্যে আমরা অবস্থান মাথা তাকান,,
এবং উপাদান মূল্য যে স্থান এ মান সেট করা.
তারপর আমরা পরের সূচক মাথা পরিবর্তন করা
ক্ষমতা%.
আমরা তখন 1 দ্বারা কিউ দৈর্ঘ্য কমাতে.
পরিশেষে, আমরা ফিরে যাও যে dequeue ছিল সফল ইঙ্গিত সত্য.
যদি আমরা আবার dequeue, দৈর্ঘ্য 2 হয়ে যাবে,
মাথা হয়ে 2 হবে,
এবং ফিরতি মূল্য 2 হতে হবে.
>> যদি আমরা যেমন একটি 7 হিসাবে অন্য সারিবদ্ধ মান কি হবে?
হিসাবে আমরা কিউ শেষে ছিল,
আমরা চারিদিকে মোড়ানো এবং অ্যারের উপাদান 0 মান সংরক্ষণ করতে হবে.
গাণিতিকভাবে, এই দ্বারা যুক্ত করা যাবে প্রতিনিধিত্ব
মাথা সূচী
এবং একটি মডুলাস কিউ ক্ষমতা ব্যবহার করে সম্পাদন.
এখানে যে 2 +2, যা 4% 4,
যা 0.
এই ধারণা আমরা এই ফাংশন কোড অনুবাদ আছে.
এখানে আমরা সারিবদ্ধ ফাংশন দেখতে,
থ - যা সারিতে একটি পয়েন্টার লাগে -
এবং লাগে উপাদান enqueued করা, যা একটি পূর্ণসংখ্যা.
আমরা পরের যাও নিশ্চিত করুন যে চেক কিউ 'র ক্ষমতা
হয় কিউ বর্তমান দ্বারা তুলনায় এখনও বৃহত্তর.
এর পরে, আমরা উপাদান অ্যারের মধ্যে উপাদান সঞ্চয়
সূচক যার মাথা + দ্বারা% কিউ ক্ষমতার দ্বারা নির্ধারিত হয়.
আমরা তখন 1 দ্বারা কিউ দৈর্ঘ্য বৃদ্ধি,
এবং তারপরে আসল যে সারিবদ্ধ ফাংশন ছিল সফল ইঙ্গিত ফিরে.
>> দুটি ফাংশন আমরা উল্লেখ করেছি ছাড়াও,
দুটি অতিরিক্ত ফাংশন আছে.
প্রথম isempty ফাংশন,
যা সারিতে একটি পয়েন্টার লাগে
এবং যাচাই দৈর্ঘ্য হল 0.
দ্বিতীয়টি হল দ্বারা ফাংশন,
যা সারিতে একটি পয়েন্টার লাগে
এবং struct থেকে বর্তমান দ্বারা উত্পন্ন হবে.
এই সংক্ষিপ্ত অবলোকন এক সারিতে সম্ভাব্য বাস্তবায়ন করেনি প্রদর্শিত.
এই বাস্তবায়ন যাও সীমাবদ্ধতা এক
যে কিউ একটি নির্দিষ্ট মাপ আছে.
যদি আমরা আরো বেশী উপাদান কিউ ধরে রাখতে পারেন যোগ চেষ্টা,
আমরা অনুরোধ উপেক্ষা উপাদান এবং ড্রপ করার প্রয়োজন হতে পারে,
অথবা আমরা ত্রুটির কিছু রিটার্ন টাইপ পছন্দ হতে পারে.
একটি পরিবর্তে একটি অ্যারের তুলনায় লিঙ্ক তালিকা ব্যবহার করে
এটি পরিবর্তনশীল আকার সারিতে আরও সহজ করতে হবে.
যাইহোক, যেহেতু আমরা একটি লিঙ্ক তালিকা উপাদান সরাসরি এক্সেস না থাকে,
যদি আমরা লেঙ্গুড় ট্র্যাক রাখতে না,
আমরা সমগ্র লিঙ্ক তালিকা শেষে প্রতিটি সময় পেতে স্ক্যান করতে হবে.
আমরা বিবেচনা তথ্য অন্য ধরনের একটি অ্যারে ব্যবহার করতে পারে,
structs হিসাবে যেমন, আরো জটিল উপাদানের queues তৈরি.
একটি বর্গ waitlist আমাদের যেমন ফিরে চিন্তা,
এই কাঠামো পৃথক ছাত্র প্রতিনিধিত্ব করতে পারে.
>> আমার নাম ক্রিস GERBER, এবং এই CS50.
[CS50.TV]
এবং আয় - >> আরও একটি সময়.
এবং যে ইঙ্গিত সত্য ফেরত - কিউ 'র সফল হয়েছে.
-% কিউ ক্ষমতা -
এটি সম্পাদনা মধ্যে মজা করা যাচ্ছে. [হাস্য]