কম্পিউটার

বৃত্তাকার সারি - C++ এ সন্নিবেশ এবং মুছে ফেলার ক্রিয়াকলাপ


একটি সারি হল একটি বিমূর্ত ডেটা কাঠামো যা উপাদানগুলির একটি সংগ্রহ ধারণ করে। সারি FIFO প্রক্রিয়া প্রয়োগ করে অর্থাৎ যে উপাদানটি প্রথমে ঢোকানো হয় সেটিও প্রথমে মুছে ফেলা হয়।

সারি বেতের এক রৈখিক তথ্য কাঠামো। কিন্তু এটি কিছু সমস্যা তৈরি করতে পারে যদি আমরা অ্যারে ব্যবহার করে সারি বাস্তবায়ন করি। কখনও কখনও কিছু ধারাবাহিক সন্নিবেশ এবং মুছে ফেলা অপারেশন ব্যবহার করে, সামনে এবং পিছনে অবস্থান পরিবর্তন হবে. সেই মুহুর্তে, দেখে মনে হবে সারিটিতে উপাদানগুলি সন্নিবেশ করার জন্য কোনও স্থান নেই। এমনকি যদি কিছু খালি জায়গা থাকে, তবে কিছু যৌক্তিক সমস্যার কারণে এটি ব্যবহার করা হবে না। এই সমস্যাটি কাটিয়ে উঠতে, আমরা সার্কুলার কিউ ডেটা স্ট্রাকচার ব্যবহার করব।

একটি বৃত্তাকার সারি হল এক ধরণের সারি যেখানে শেষ অবস্থানটি একটি বৃত্ত তৈরি করার জন্য প্রথম অবস্থানের সাথে সংযুক্ত থাকে৷

অ্যালগরিদম

ঢোকান(সারি, কী) -

begin
   if front = 0 and rear = n – 1, or front = rear + 1, then queue is full, and return
   otherwise
   if front = -1, then front = 0 and rear = 0
   else
      if rear = n – 1, then, rear = 0, else rear := rear + 1
   queue[rear] = key
end

মুছুন(সারি)

begin
   if front = -1 then queue is empty, and return
   otherwise
   item := queue[front]
   if front = rear, then front and rear will be -1
   else
      if front = n – 1, then front := 0 else front := front + 1
end

উদাহরণ

#include <iostream>
using namespace std;
int cqueue[5];
int front = -1, rear = -1, n=5;
void insertCQ(int val) {
   if ((front == 0 && rear == n-1) || (front == rear+1)) {
      cout<<"Queue Overflow \n";
      return;
   }
   if (front == -1) {
      front = 0;
      rear = 0;
   }
   else {
      if (rear == n - 1)
         rear = 0;
      else
         rear = rear + 1;
   }
   cqueue[rear] = val ;
}
void deleteCQ() {
   if (front == -1) {
      cout<<"Queue Underflow\n";
      return ;
   }
   cout<<"Element deleted from queue is : "<<cqueue[front]<<endl;
   if (front == rear) {
      front = -1;
      rear = -1;
   }
   else {
      if (front == n - 1)
         front = 0;
      else
         front = front + 1;
   }
}
void displayCQ() {
   int f = front, r = rear;
   if (front == -1) {
      cout<<"Queue is empty"<<endl;
      return;
   }
   cout<<"Queue elements are :\n";
   if (f <= r) {
      while (f <= r){
         cout<<cqueue[f]<<" ";
         f++;
      }
   }
   else {
      while (f <= n - 1) {
         cout<<cqueue[f]<<" ";
         f++;
      }
      f = 0;
      while (f <= r) {
         cout<<cqueue[f]<<" ";
         f++;
      }
   }
   cout<<endl;
}
int main() {
   int ch, val;
   cout<<"1)Insert\n";
   cout<<"2)Delete\n";
   cout<<"3)Display\n";
   cout<<"4)Exit\n";
   do {
      cout<<"Enter choice : "<<endl;
      cin>>ch;
      switch(ch) {
         case 1:
            cout<<"Input for insertion: "<<endl;
            cin>>val;
            insertCQ(val);
         break;
         case 2:
            deleteCQ();
         break;
         case 3:
            displayCQ();
         break;
         case 4:
            cout<<"Exit\n";
         break;
            default: cout<<"Incorrect!\n";
      }
   } while(ch != 4);
      return 0;
}

আউটপুট

1)Insert
2)Delete
3)Display
4)Exit
Enter choice :
1
Input for insertion:
10
Enter choice :
1
Input for insertion:
20
Enter choice :
1
Input for insertion:
30
Enter choice :
1
Input for insertion:
40
Enter choice :
1
Input for insertion:
50
Enter choice :
3
Queue elements are :
10 20 30 40 50
Enter choice :
2
Element deleted from queue is : 10
Enter choice :
2
Element deleted from queue is : 20
Enter choice :
3
Queue elements are :
30 40 50
Enter choice :
4
Exit

  1. fmax() এবং fmin() C++ এ

  2. STL সেট C++ এ সন্নিবেশ এবং মুছে ফেলা

  3. C++ এ ডিলিট() এবং ফ্রি()

  4. পাইথন ফ্রন্ট এবং রিয়ার রেঞ্জ একটি তালিকায় মুছে ফেলা?