কম্পিউটার

লিঙ্ক করা তালিকা ব্যবহার করে স্ট্যাক বাস্তবায়নের জন্য C++ প্রোগ্রাম


একটি স্ট্যাক হল একটি বিমূর্ত ডেটা কাঠামো যা উপাদানগুলির একটি সংগ্রহ ধারণ করে। স্ট্যাক LIFO মেকানিজম প্রয়োগ করে অর্থাৎ শেষে যে উপাদানটি পুশ করা হয় তা প্রথমে পপ আউট করা হয়। স্ট্যাকের কিছু নীতিগত ক্রিয়াকলাপ হল −

  • পুশ - এটি স্ট্যাকের শীর্ষে একটি ডেটা মান যোগ করে।

  • পপ - এটি স্ট্যাকের উপরে ডেটা মান সরিয়ে দেয়।

  • পিক - এটি স্ট্যাকের শীর্ষ ডেটা মান প্রদান করে।

একটি প্রোগ্রাম যা লিঙ্কযুক্ত তালিকা ব্যবহার করে একটি স্ট্যাক প্রয়োগ করে নিম্নরূপ দেওয়া হল।

উদাহরণ

#include <iostream>
using namespace std;
struct Node {
   int data;
   struct Node *next;
};
struct Node* top = NULL;
void push(int val) {
   struct Node* newnode = (struct Node*) malloc(sizeof(struct Node));
   newnode->data = val;
   newnode->next = top;
   top = newnode;
}
void pop() {
   if(top==NULL)
   cout<<"Stack Underflow"<<endl;
   else {
      cout<<"The popped element is "<< top->data <<endl;
      top = top->next;
   }
}
void display() {
   struct Node* ptr;
   if(top==NULL)
   cout<<"stack is empty";
   else {
      ptr = top;
      cout<<"Stack elements are: ";
      while (ptr != NULL) {
         cout<< ptr->data <<" ";
         ptr = ptr->next;
      }
   }
   cout<<endl;
}
int main() {
   int ch, val;
   cout<<"1) Push in stack"<<endl;
   cout<<"2) Pop from stack"<<endl;
   cout<<"3) Display stack"<<endl;
   cout<<"4) Exit"<<endl;
   do {
      cout<<"Enter choice: "<<endl;
      cin>>ch;
      switch(ch) {
         case 1: {
            cout<<"Enter value to be pushed:"<<endl;
            cin>>val;
            push(val);
            break;
         }
         case 2: {
            pop();
            break;
         }
         case 3: {
            display();
            break;
         }
         case 4: {
            cout<<"Exit"<<endl;
            break;
         }
         default: {
            cout<<"Invalid Choice"<<endl;
         }
      }
   }while(ch!=4);
   return 0;
}

আউটপুট

1) Push in stack
2) Pop from stack
3) Display stack
4) Exit

Enter choice: 1
Enter value to be pushed: 2
Enter choice: 1
Enter value to be pushed: 6
Enter choice: 1
Enter value to be pushed: 8
Enter choice: 1
Enter value to be pushed: 7
Enter choice: 2
The popped element is 7
Enter choice: 3
Stack elements are:8 6 2
Enter choice: 5
Invalid Choice
Enter choice: 4
Exit

উপরের প্রোগ্রামে, স্ট্রাকচার নোডটি স্ট্যাক হিসাবে প্রয়োগ করা লিঙ্কযুক্ত তালিকা তৈরি করতে ব্যবহৃত হয়। কোডটি নিচে দেওয়া হল।

struct Node {
int data;
struct Node *next;
};

পুশ() ফাংশনটি স্ট্যাকের মধ্যে পুশ করার জন্য আর্গুমেন্ট ভ্যাল অর্থাৎ মান নেয়। তারপর একটি নতুন নোড তৈরি করা হয় এবং val ডাটা অংশে ঢোকানো হয়। এই নোডটি লিঙ্কযুক্ত তালিকার সামনে যুক্ত করা হয়েছে এবং এটিতে শীর্ষ পয়েন্ট রয়েছে। এর জন্য কোড স্নিপেট নিম্নরূপ।

void push(int val) {
   struct Node* newnode = (struct Node*) malloc(sizeof(struct Node));
   newnode->data = val;
   newnode->next = top;
   top = newnode;
}

পপ() ফাংশন স্ট্যাকের সর্বোচ্চ মান পপ করে, যদি কোনো মান থাকে। স্ট্যাক খালি হলে আন্ডারফ্লো প্রিন্ট করা হয়। এটি নিম্নরূপ দেওয়া হল।

void pop() {
   if(top==NULL)
   cout<<"Stack Underflow"<<endl;
   else {
      cout<<"The popped element is "<< top->data <<endl;
      top = top->next;
   }
}

প্রদর্শন() ফাংশন স্ট্যাকের সমস্ত উপাদান প্রদর্শন করে। এটি ptr ব্যবহার করে করা হয় যা প্রাথমিকভাবে শীর্ষে নির্দেশ করে কিন্তু স্ট্যাকের শেষ পর্যন্ত যায়। ti ptr সম্পর্কিত সমস্ত ডেটা মান মুদ্রিত হয়। এটি নীচে দেওয়া হল৷

void display() {
   struct Node* ptr;
   if(top==NULL)
   cout<<"stack is empty";
   else {
      ptr = top;
      cout<<"Stack elements are: ";
      while (ptr != NULL) {
         cout<< ptr->data <<" ";
         ptr = ptr->next;
      }
   }
   cout<<endl;
}

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

int main() {
   int ch, val;
   cout<<"1) Push in stack"<<endl;
   cout<<"2) Pop from stack"<<endl;
   cout<<"3) Display stack"<<endl;
   cout<<"4) Exit"<<endl;
   do {
      cout<<"Enter choice: "<<endl;
      cin>>ch;
      switch(ch) {
         case 1: {
            cout<<"Enter value to be pushed:"<<endl;
            cin>>val;
            push(val);
            break;
         }
         case 2: {
            pop();
            break;
         }
         case 3: {
            display();
            break;
         }
         case 4: {
            cout<<"Exit"<<endl;
            break;
         }
         default: {
            cout<<"Invalid Choice"<<endl;
         }
      }
   }while(ch!=4);
   return 0;
}

  1. সংলগ্নতা তালিকা বাস্তবায়নের জন্য C++ প্রোগ্রাম

  2. স্ট্যাক বাস্তবায়নের জন্য C++ প্রোগ্রাম

  3. লিংকড লিস্ট ব্যবহার করে গ্রাফ রিপ্রেজেন্ট করার জন্য C++ প্রোগ্রাম

  4. পাইথন প্রোগ্রাম লিঙ্ক করা তালিকা ব্যবহার করে একটি স্ট্যাক বাস্তবায়ন করতে