সার্কুলার কিউ - ডেটা স্ট্রাকচারের চক্করের আরেকটি অধ্যায়

 


Queue বা Linear Queue হলো একটি লিনিয়ার ডেটা স্ট্রাকচার যার একপাশ দিয়ে ডাটা ইনসার্ট করা হয় আরেকপাশ দিয়ে তা ডিলিট করে দেয়া হয় যেমনটা আগের আলোচনায় বলেছিলাম। এখন আসি এই Linear Queue এর সমস্যা কি? সমস্যা কিছুই না আবার অনেক কিছু । আমরা ডাটা স্ট্রাকচার ব্যাবহারই করি যাতে আমাদের তথ্যের সংরক্ষণের খাতিরে ম্যামরীর যথাযুক্ত ব্যাবহার নিশ্চিত করা যায়। এখানেই আসল সমস্যার সৃষ্টি হচ্ছে Linear Queue এ। ধরি ৫ টি ডাটা রাখতে পারে এমন একটি Linear Queue এ আপনি ৫ বার Equeue অপারেশন চালালেন ও ৪ বার Dequeue অপারেশন চালালেন ফলাফল কি হতে পারে? আপনার front এর ভ্যালু তখন হবে ৩ এবং রেয়ার হবে ৪ ফলে আপনি যখন আবার একটি Enqueue অপারেশন চালাতে যাবেন ঠিক তখনই আপনাকে দেখাবে লিস্ট ইজ ফুল । কিন্তু এদিকে ০ থেকে ২ নং ইনডেক্স যে ফাঁকা এটা সে ভুলে বসে আছে। তবে কি করব? এই সমস্যার সমাধানই হলো Circular queue যেখানে rear যখনই ম্যাক্সিমাম ইনডেক্সের পৌছে যাবে তা শুরুর ইনডেক্সকে চেক করবে যদি সেটা ফাঁকা থাকে তবে সেখানে ডাটা ইনসার্ট করার সুযোগ পাবেন নয়ত দেখাবে ওভার ফ্লো কনডিশন।

চেক করার ক্ষেত্রে,

(Rear+1)%N==Front

এই শর্তটাই চেক করে আমরা Queue টি ফুল কিনা তা চেক করব। Rear পরিবর্তন করব,

Rear = (Rear+1)%N

আবার Dequeue অপারেশন চালাতেও একই Front কে ইনক্রিমেন্ট না করে

Front = (Front+1)%N

এই ইকুয়েশনের মাধ্যমে Front পরিবর্তন করব।

যে কোন প্রশ্ন থাকলে মেইল করতে পারেন joybaust50@gmail.com এ 

মন্তব্যসমূহ