লিনিয়ার ডেটা স্ট্রাকচার: লিংকড লিস্ট, স্ট্যাক, কিউ

ডেটা স্ট্রাকচার - কম্পিউটার প্রোগ্রামিং (Computer Programming) - Computer Science

624

লাইনিয়ার ডেটা স্ট্রাকচার হল এমন ডেটা স্ট্রাকচার যেখানে উপাদানগুলো একটি সরল রেখায় সাজানো হয়। প্রতিটি উপাদান তার পূর্ববর্তী এবং পরবর্তী উপাদানের সাথে যুক্ত থাকে। লাইনিয়ার ডেটা স্ট্রাকচারের মধ্যে লিঙ্কড লিস্ট, স্ট্যাক, এবং কিউ অন্যতম। প্রতিটি ডেটা স্ট্রাকচারের বিশেষত্ব, সুবিধা এবং ব্যবহার আছে। নিচে এই তিনটি ডেটা স্ট্রাকচারের বিস্তারিত আলোচনা করা হলো।


1. লিঙ্কড লিস্ট (Linked List)

লিঙ্কড লিস্ট হলো একটি ডাইনামিক ডেটা স্ট্রাকচার, যেখানে উপাদানগুলো নোডের মাধ্যমে যুক্ত থাকে। প্রতিটি নোডে ডেটা এবং পরবর্তী নোডের রেফারেন্স (পয়েন্টার) থাকে। এটি ডেটা ম্যানিপুলেশন এবং ইনসার্ট ও ডিলিট অপারেশনকে সহজ করে।

বৈশিষ্ট্য:

  • ডাইনামিক সাইজ: লিঙ্কড লিস্টের আকার পরিবর্তনশীল, তাই এটি রানটাইমে আকার বাড়াতে বা কমাতে পারে।
  • নির্দিষ্ট ইন্ডেক্স নেই: লিঙ্কড লিস্টে প্রতিটি নোডের সরাসরি অ্যাক্সেস নেই; প্রতিটি নোডে পৌঁছানোর জন্য আগের নোডের মাধ্যমে যেতে হয়।

উদাহরণ (C++):

#include <iostream>

struct Node {
    int data;
    Node* next; // পরবর্তী নোডের রেফারেন্স
};

class LinkedList {
public:
    Node* head;

    LinkedList() {
        head = nullptr; // শুরুর অবস্থায় হেড পয়েন্টার শূন্য
    }

    // নতুন নোড যোগ করা
    void insert(int value) {
        Node* newNode = new Node();
        newNode->data = value;
        newNode->next = head; // নতুন নোডের পরবর্তী পয়েন্টার হেড
        head = newNode; // হেড আপডেট করা
    }

    // নোড প্রদর্শন করা
    void display() {
        Node* temp = head;
        while (temp != nullptr) {
            std::cout << temp->data << " ";
            temp = temp->next; // পরবর্তী নোডে যাওয়া
        }
        std::cout << std::endl;
    }
};

int main() {
    LinkedList list;
    list.insert(10);
    list.insert(20);
    list.insert(30);
    list.display(); // আউটপুট: 30 20 10
    return 0;
}

2. স্ট্যাক (Stack)

স্ট্যাক হলো একটি লাস্ট ইন ফার্স্ট আউট (LIFO) ডেটা স্ট্রাকচার, যেখানে সর্বশেষে যুক্ত হওয়া উপাদানটি প্রথমে মুছে ফেলা হয়। এটি ডেটার সাময়িক সংরক্ষণে ব্যবহৃত হয়, যেমন ফাংশন কল, ব্যাকট্র্যাকিং ইত্যাদি।

বৈশিষ্ট্য:

  • পুশ (Push): নতুন উপাদান স্ট্যাকের শীর্ষে যুক্ত করা।
  • পপ (Pop): শীর্ষ থেকে উপাদান মুছে ফেলা।
  • পিক (Peek): শীর্ষ উপাদান দেখতে পারা।

উদাহরণ (C++):

#include <iostream>
#include <stack>

int main() {
    std::stack<int> myStack;

    // স্ট্যাকে উপাদান যুক্ত করা
    myStack.push(10);
    myStack.push(20);
    myStack.push(30);

    // শীর্ষ উপাদান দেখা
    std::cout << "Top element: " << myStack.top() << std::endl; // আউটপুট: 30

    // স্ট্যাক থেকে উপাদান মুছে ফেলা
    myStack.pop();

    std::cout << "Top element after pop: " << myStack.top() << std::endl; // আউটপুট: 20

    return 0;
}

3. কিউ (Queue)

কিউ হলো একটি ফার্স্ট ইন ফার্স্ট আউট (FIFO) ডেটা স্ট্রাকচার, যেখানে প্রথমে যুক্ত হওয়া উপাদানটি প্রথমে মুছে ফেলা হয়। এটি সাধারণত কাজের গতি নিয়ন্ত্রণে ব্যবহৃত হয়, যেমন প্রিন্টিং কাজ, প্রসেসিং এবং লাইনের কনটেক্সটে।

বৈশিষ্ট্য:

  • এনকিউ (Enqueue): নতুন উপাদান কিউয়ের শেষে যুক্ত করা।
  • ডিকিউ (Dequeue): প্রথম উপাদান কিউ থেকে মুছে ফেলা।
  • পিক (Peek): প্রথম উপাদান দেখতে পারা।

উদাহরণ (C++):

#include <iostream>
#include <queue>

int main() {
    std::queue<int> myQueue;

    // কিউতে উপাদান যুক্ত করা
    myQueue.push(10);
    myQueue.push(20);
    myQueue.push(30);

    // প্রথম উপাদান দেখা
    std::cout << "Front element: " << myQueue.front() << std::endl; // আউটপুট: 10

    // কিউ থেকে উপাদান মুছে ফেলা
    myQueue.pop();

    std::cout << "Front element after dequeue: " << myQueue.front() << std::endl; // আউটপুট: 20

    return 0;
}

সারাংশ

  1. লিঙ্কড লিস্ট: ডাইনামিক সাইজ, যা নোডের মাধ্যমে যুক্ত থাকে এবং ইনসার্ট ও ডিলিট অপারেশন সহজ করে।
  2. স্ট্যাক: LIFO পদ্ধতিতে কাজ করে, যেখানে সর্বশেষ যুক্ত হওয়া উপাদানটি প্রথমে মুছে ফেলা হয়।
  3. কিউ: FIFO পদ্ধতিতে কাজ করে, যেখানে প্রথমে যুক্ত হওয়া উপাদানটি প্রথমে মুছে ফেলা হয়।

এই তিনটি ডেটা স্ট্রাকচার বিভিন্ন ধরনের সমস্যা সমাধানে খুবই কার্যকর এবং প্রোগ্রামিংয়ে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By
Promotion

Are you sure to start over?

Loading...