Advertisement
0xCor3

Queue Array

May 16th, 2020
1,547
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #include <iostream>
  2. #define MAX 20 //maksimum data queue
  3. using namespace std;
  4.  
  5. //Deklarasi struct antrian
  6. struct Queue {
  7.     int front, rear, data[MAX];
  8. }Q;
  9.  
  10. //cek apakah antrian penuh
  11. bool isFull() {
  12.     return Q.rear == MAX;
  13. }
  14.  
  15. //cek apakah antrian kosong
  16. bool isEmpty() {
  17.     return Q.rear == 0;
  18. }
  19.  
  20. //Menampilkan Queue
  21. void printQueue() {
  22.     if (isEmpty()) {
  23.     cout << "Antrian kosong"<<endl;
  24.     }
  25.     else {
  26.         cout << "QUEUE : ";
  27.         for (int i = Q.front; i < Q.rear; i++)
  28.         //menambahkan koma jika data tidak terdapat di antrian pertama
  29.             cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
  30.         cout << endl;
  31.   }
  32. }
  33.  
  34. //manambahkan data ke antrian
  35. void enqueue() {
  36.     if (isFull())
  37.     {
  38.         cout << "Antrian penuh!"<<endl;
  39.     }
  40.     else {
  41.         int data;
  42.         //menambahkan data ke antrian
  43.         cout << "Masukkan Data : ";cin >> data;
  44.         Q.data[Q.rear] = data;
  45.         //menempatkan tail pada elemen data terakhir yang ditambahkan
  46.         Q.rear++;
  47.         cout << "Data ditambahkan\n";
  48.         printQueue();
  49.     }
  50. }
  51.  
  52. // mengambil data dari antrian
  53. void dequeue() {
  54.     if (isEmpty())
  55.     {
  56.         cout << "Antrian masih kosong"<<endl;
  57.     }
  58.     else{
  59.         cout << "Mengambil data \"" << Q.data[Q.front] << "\"..." << endl;
  60.         //menggeser antrian data ke head
  61.         for (int i = Q.front; i < Q.rear; i++)
  62.             Q.data[i] = Q.data[i + 1];
  63.         //menempatkan tail pada data terakhir yang digeser
  64.         Q.rear--;
  65.         printQueue();
  66.     }
  67. }
  68.  
  69. int main() {
  70.     int choose;
  71.     do
  72.     {
  73.         cout<< "-------------------\n"
  74.             << "   Menu Pilihan\n"
  75.             << "-------------------\n"
  76.             << " [1] Insert element to queue \n"
  77.             << " [2] Delete element from queue\n"
  78.             << " [3] Display all the elements of queue\n"
  79.             << " [4] Exit \n\n"
  80.             << "-------------------\n"
  81.             << "Masukkan pilihan : "; cin >> choose;
  82.         switch (choose)
  83.         {
  84.         case 1:
  85.             enqueue();
  86.             break;
  87.         case 2:
  88.             dequeue();
  89.             break;
  90.         case 3:
  91.             printQueue();
  92.             break;
  93.         default:
  94.             cout << "Pilihan tidak tersedia";
  95.             break;
  96.         }
  97.     } while (choose != 4);
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement