সরাসরি প্রধান সামগ্রীতে চলে যান

সার্কুলার কিউ (Circular Queue) এর সহজ পাঠ

system 經營

Introduction: সবাইকে স্বাগতম! আজকের আলোচনাটি মূলত কম্পিউটার সায়েন্সের ডাটা স্ট্রাকচার (Data Structure) এর একটি গুরুত্বপূর্ণ বিষয়— সার্কুলার কিউ (Circular Queue) নিয়ে। আমরা অনেকেই 'কিউ' বা লাইনের কথা জানি, কিন্তু এটি কেন গোল বা 'সার্কুলার' হতে হয় এবং এটি কীভাবে কাজ করে, তা আমরা খুব সহজভাবে এই আলোচনায় জানব।


১. কিউ (Queue) ও সার্কুলার কিউ এর সাধারণ ধারণা

আমরা যখন কোনো লাইনে দাঁড়াই (যেমন টিকিট কাউন্টার), সেটাকে বলা হয় Queue। এর নিয়ম হলো FIFO (First In First Out)—অর্থাৎ যে আগে আসবে, সেই আগে টিকিট পাবে।

Reference: [00:17] - [01:00]

বিস্তারিত: একটি সাধারণ কিউতে দুটি দিক থাকে:

  • Front (সামনের দিক): যেখান থেকে মানুষ বা ডাটা বের হয়ে যায়।

  • Rear (পেছনের দিক): যেখান থেকে নতুন ডাটা যোগ হয়।

সার্কুলার কিউ হলো এমন একটি কিউ যেখানে লাইনের শেষ প্রান্ত শুরুর প্রান্তের সাথে যুক্ত থাকে। অনেকটা গোল টেবিলের মতো। সাধারণ কিউতে একবার ডাটা ডিলিট করলে সামনের ফাঁকা জায়গাগুলো আর সহজে ব্যবহার করা যায় না, কিন্তু সার্কুলার কিউতে সেই ফাঁকা জায়গাগুলো আমরা আবার ব্যবহার করতে পারি।

  • সহজ ব্যাখ্যা (Difficult Words):

    • FIFO: এর মানে হলো 'আগে আসলে আগে পাবেন'।

    • Rear: এটি হলো কিউ বা লাইনের পেছনের অংশ যেখানে নতুন কেউ এসে দাঁড়ায়।

    • Front: এটি হলো লাইনের একদম সামনের অংশ যেখান থেকে কাজ শেষ করে বের হওয়া যায়।


২. সার্কুলার কিউ কীভাবে কাজ করে? (Implementation)

সার্কুলার কিউ সাধারণত একটি Array (একটি নির্দিষ্ট সাইজের তালিকা) দিয়ে তৈরি করা হয়।

Reference: [02:28] - [03:59]

বিস্তারিত: মনে করি আমাদের একটি এরে (Array) আছে যার সাইজ ৩। ১. শুরুতে এটি খালি থাকবে, তাই Front এবং Rear দুটিই থাকবে -১ এ। ২. নতুন ডাটা যোগ করলে (Push), Rear এক ঘর করে সামনে বাড়বে। ৩. ডাটা ডিলিট করলে (Pop), Front এক ঘর করে সামনে বাড়বে।

ম্যাজিক ফর্মুলা: সার্কুলার কিউতে গোল হয়ে ঘোরার জন্য একটি বিশেষ ফর্মুলা ব্যবহার করা হয়: (Index + 1) % Capacity। এর মানে হলো, যখন আমরা ৩ নম্বর ইন্ডেক্সে পৌঁছাব, তখন এই ফর্মুলা আমাদের আবার ০ নম্বর ইন্ডেক্সে পাঠিয়ে দেবে।

  • সহজ ব্যাখ্যা (Difficult Words):

    • Capacity: এরে বা কিউতে সর্বোচ্চ কতগুলো ডাটা রাখা যাবে তার সীমা।

    • Modulo (%): এটি একটি গণিতিক চিহ্ন যা ভাগশেষ (Remainder) বের করতে সাহায্য করে। গোল পথে ঘোরার জন্য এটি ব্যবহার করা হয়।


৩. কোডিং ও ইমপ্লিমেন্টেশন (C++)

নিচে সার্কুলার কিউ এর একটি সহজ কোড দেওয়া হলো যা দিয়ে আপনি বুঝতে পারবেন কীভাবে ডাটা পুশ (Push) এবং পপ (Pop) হয়।

Reference: [11:19] - [13:00]

C++

#include <iostream>
using namespace std;

class CircularQueue {
    int *arr;
    int front, rear, currSize, capacity;

public:
    // কনস্ট্রাক্টর: কিউ এর সাইজ নির্ধারণ করা
    CircularQueue(int n) {
        capacity = n;
        arr = new int[n];
        currSize = 0;
        front = 0;
        rear = -1;
    }

    // পুশ করা: নতুন ডাটা যোগ করা
    void push(int data) {
        if (currSize == capacity) {
            cout << "Queue is Full!" << endl;
            return;
        }
        rear = (rear + 1) % capacity; // গোল হয়ে ঘোরার ফর্মুলা
        arr[rear] = data;
        currSize++;
    }

    // পপ করা: ডাটা মুছে ফেলা
    void pop() {
        if (currSize == 0) {
            cout << "Queue is Empty!" << endl;
            return;
        }
        front = (front + 1) % capacity;
        currSize--;
    }

    // সামনের ডাটা দেখা
    int getFront() {
        if (currSize == 0) return -1;
        return arr[front];
    }
}; 

কোড ব্যাখ্যা:

  • CircularQueue(int n): এটি কিউটি তৈরি করে এবং বলে দেয় এতে কতটুকু জায়গা থাকবে।

  • push(int data): নতুন ডাটা আসলে rear কে আপডেট করে সেখানে ডাটা বসিয়ে দেয়।

  • pop(): সামনের ডাটা সরিয়ে দিয়ে front কে এক ঘর সামনে নিয়ে যায়।

  • (rear + 1) % capacity: এটিই মূলত কিউটিকে 'সার্কুলার' বা গোল রাখে।


৪. আমার বিশ্লেষণ ও ভাবনা (Analysis & Perception)

সারাংশ ও উদ্দেশ্য: সৃষ্টিকর্তা (Content Creator) এখানে বোঝাতে চেয়েছেন যে, মেমোরি বা জায়গার সঠিক ব্যবহার করতে সার্কুলার কিউ কতটা দক্ষ। সাধারণ কিউতে সামনের জায়গা খালি থাকলেও ব্যবহার করা যায় না, যা অপচয়। সার্কুলার কিউ সেই অপচয় রোধ করে।

বাস্তবতা ও সম্ভাবনা: ১. রিয়েলিটি চেক: আমাদের কম্পিউটার বা মোবাইলের প্রসেসর যখন অনেকগুলো কাজ একসাথে পায়, তখন সে সার্কুলার কিউ ব্যবহার করে কাজগুলো হ্যান্ডেল করে। যেমন- কিবোর্ড টাইপিং বা নেটওয়ার্ক প্যাকেট ম্যানেজমেন্ট। ২. বিকল্প: যদি আমাদের ডাটার পরিমাণ আগে থেকে জানা না থাকে, তবে এরে (Array) এর বদলে Linked List দিয়ে সার্কুলার কিউ বানানো আরও ভালো বিকল্প হতে পারে, কারণ এতে সাইজ নিয়ে চিন্তা করতে হয় না। ৩. পরামর্শ: আপনি যদি প্রোগ্রামিং শিখতে চান, তবে এই Modulo (%) লজিকটি ভালো করে বুঝুন। এটি শুধু কিউতে নয়, গেম ডেভেলপমেন্ট (যেমন গোল ম্যাপ) এবং ঘড়ির সময় গণনায় অনেক কাজে লাগে।

ভিডিও রেফারেন্স: L78. Circular Queue in Data Structure

[

L78. Circular Queue in Data Strucuture

Shradha Khapra · 122K views

](http://www.youtube.com/watch?v=4mKKolshFD0)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...