Advertisement
khisby

Circular Queue

May 20th, 2018
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #define maks 5
  4. using namespace std;
  5.  
  6. struct antrian{
  7.     int f=-1;
  8.     int r=-1;
  9.     char data[maks];
  10. }ant;
  11.  
  12. bool isempty(){
  13.     if (ant.f ==  -1)
  14.     {
  15.         return true;
  16.     }else{
  17.         return false;
  18.     }
  19. }
  20.  
  21. bool isfull(){
  22.     if(((ant.r+1) % maks) == ant.f)
  23.     {
  24.         return true;
  25.     }else{
  26.         return false;
  27.     }
  28. }
  29.  
  30. void enqueue(char data){
  31.     if(isfull()){
  32.         cout << "Antrian Penuh.." << endl;
  33.         system("pause");
  34.     }else{
  35.         if(isempty()){
  36.             ant.f = ant.f + 1;
  37.             ant.r = ant.r + 1;
  38.         }else{
  39.             ant.r = (ant.r + 1) % maks;
  40.         }
  41.         ant.data[ant.r] = data;
  42.         cout << "Data telah dimasukkan" << endl;
  43.     }
  44. }
  45.  
  46. void dequeue(){
  47.     char data;
  48.     if(isempty()){
  49.         cout << "Antrian kosong" << endl;
  50.         system("pause");
  51.     }else{
  52.         data = ant.data[ant.f];
  53.         cout << "Data " << data << " telah di hapus" << endl;
  54.         if(ant.f == ant.r){
  55.             ant.f = - 1;
  56.             ant.r = - 1;
  57.         }else{
  58.             ant.f = (ant.f + 1) % maks;
  59.         }
  60.     }
  61. }
  62.  
  63. void display(){
  64.     int i;
  65.     if(!isempty()){
  66.         if(ant.f > ant.r){
  67.             for(i=ant.f;i<maks;i++){
  68.                 cout << "["  << ant.data[i] << "]" << " ";
  69.             }
  70.             for(i=0;i<=ant.r;i++){
  71.                 cout << "["  << ant.data[i] << "]" << " ";
  72.             }
  73.         }else{
  74.             for(i=ant.f;i<=ant.r;i++){
  75.                 cout << "["  << ant.data[i] << "]" << " ";
  76.             }
  77.         }
  78.     }
  79. }
  80.  
  81. int main(){
  82.     char data;
  83.     int menu;
  84.  
  85.     do{
  86.         system("cls");
  87.         cout << "Front : " << ant.f << endl;
  88.         cout << "Rear : " << ant.r << endl;
  89.         cout << "Isempty ? "<< isempty() <<endl;
  90.         cout << "Isfull ? " << isfull() <<endl;
  91.         cout << "maks ? " << maks <<endl;
  92.  
  93.         display();
  94.         cout << endl;
  95.         cout << "Menu: "<<endl;
  96.         cout << "1. Tambah(push)"<<endl;
  97.         cout << "2. Hapus(POP)"<<endl;
  98.         cout << "3. Keluar"<<endl;
  99.         cout << "Masukkan menu: ";
  100.         cin >> menu;
  101.  
  102.         if(menu == 1){
  103.             cout << "Masukkan data : ";
  104.             cin >>data;
  105.             enqueue(data);
  106.         }else{
  107.             dequeue();
  108.         }
  109.     }while(menu != 3);
  110.  
  111.  
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement