Advertisement
feriyan8

double ended que

May 24th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.44 KB | None | 0 0
  1. #include <iostream>
  2. #define MAX 5
  3.  
  4. using namespace std;
  5.  
  6. struct mahasiswa {
  7.     int data[MAX];
  8.     string nama[MAX];
  9.     int front;
  10.     int rear;
  11. }mhs;
  12.  
  13. void inisialisasi () {
  14.     mhs.front = -1;
  15.     mhs.rear = MAX;
  16. }
  17.  
  18. bool isEmpty () {
  19.     return mhs.front == -1 && mhs.rear == MAX;
  20. }
  21.  
  22. bool isFull () {
  23.     return mhs.front == mhs.rear - 1;
  24. }
  25.  
  26. void enqueueFront () {
  27.     if(isFull()){
  28.         cout<< "DATA PENUH";
  29.     } else {
  30.         mhs.front++;
  31.         cout<<"DATA : "; cin >> mhs.data[mhs.front];
  32.         cout<<"NAMA : "; cin >> mhs.nama[mhs.front];
  33.     }
  34. }
  35.  
  36. void enqueueRear () {
  37.     if (isFull()) {
  38.         cout<< "DATA PENUH";
  39.     } else {
  40.         mhs.rear--;
  41.          cout<<"DATA : "; cin >> mhs.data[mhs.rear];
  42.         cout<<"NAMA : "; cin >> mhs.nama[mhs.rear];
  43.     }
  44. }
  45.  
  46. void dequeueFront () {
  47.     if(isEmpty()){
  48.        cout<< "DATA KOSONG";
  49.     } else {
  50.         for (int i = 0; i < mhs.front; i++) {
  51.             mhs.data[i] = mhs.data[i+1];
  52.             mhs.nama[i] = mhs.nama[i+1];
  53.         }
  54.         mhs.front--;
  55.     }
  56. }
  57.  
  58. void dequeueRear () {
  59.     if(isEmpty()){
  60.         cout<< "DATA KOSONG";
  61.     } else {
  62.         for (int i = MAX - 1; i > mhs.rear; i--) {
  63.             mhs.data[i] = mhs.data[i-1];
  64.             mhs.nama[i] = mhs.nama[i-1];
  65.         }
  66.         mhs.rear++;
  67.     }
  68. }
  69. void view () {
  70.     if (isEmpty()){
  71.         cout<< "DATA KOSONG";
  72.     } else {
  73.         for (int i = 0; i <= mhs.front; i++){
  74.             cout << " <- DATA : "<< mhs.data[i] << " NAMA : " << mhs.nama[i];
  75.         }
  76.  
  77.         for (int i = mhs.rear; i < MAX; i++) {
  78.             cout << " DATA : "<< mhs.data[i] << " NAMA : " << mhs.nama[i] << " -> ";
  79.         }
  80.     }
  81. }
  82.  
  83. int main () {
  84.     bool exit = false;
  85.     int pil;
  86.     inisialisasi();
  87.     do {
  88.     cout<<endl;
  89.     cout<< "1.INSERT KIRI "<<endl;
  90.     cout<< "2.INSERT KANAN "<<endl;
  91.     cout<< "3.DELETE KIRI "<<endl;
  92.     cout<< "4.DELETE KANAN "<<endl;
  93.     cout<< "5.VIEW "<<endl;
  94.     cout<< "Masukkan Pilihan : ";cin>>pil;
  95.         switch(pil){
  96.             case 1:
  97.                 enqueueFront();
  98.                 break;
  99.             case 2:
  100.                 enqueueRear();
  101.                 break;
  102.             case 3:
  103.                 dequeueFront();
  104.                 break;
  105.             case 4:
  106.                 dequeueRear();
  107.                 break;
  108.             case 5:
  109.                 view();
  110.                 break;
  111.         }
  112.     } while (exit == false);
  113.  
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement