Advertisement
waydub12

stack array

Apr 27th, 2020
411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.74 KB | None | 0 0
  1.     #include <iostream>
  2. using namespace std;
  3.  
  4. // inisialisasi maksimal elemen pada array
  5. const int max_element = 255;
  6. struct Stack{
  7.     // data pada stack
  8.     char member[max_element];
  9.     // menyimpan nilai top / peek
  10.     int TOP;
  11. };
  12. Stack S;
  13.  
  14. // membuat sebuah stack
  15. void createStack(Stack& S){
  16.     S.TOP = -1;
  17. }
  18.  
  19. // mengembalikan elemen tertinggi stack
  20. int peek(Stack S){
  21.     return S.member[S.TOP];
  22. }
  23.  
  24. // mengecek apakah suatu stack kosong
  25. bool isEmpty(Stack S){
  26.     if (S.TOP < 0){
  27.         return true;
  28.     } else {
  29.         return false;
  30.     }
  31. }
  32.  
  33. // memasukan elemen ke stack
  34. void push(Stack& S, char new_element){
  35.  
  36.     // cek jika stack telah mencapai batas maksimal
  37.     if (S.TOP == max_element - 1){
  38.         cout<<"Stack Overflow"<<endl;
  39.     } else {
  40.         // increment nilai top / peek
  41.         S.TOP = S.TOP + 1;
  42.         // masukan data dari elemen stack
  43.         S.member[S.TOP] = new_element;
  44.     }
  45. }
  46.  
  47. // mengeluarkan elemen ke stack
  48. void pop(Stack& S, char& result_element){
  49.    
  50.     // cek jika stack kosong (tidak mempunyai elemen)
  51.     if (isEmpty(S)){
  52.         cout<<"Stack Underflow"<<endl;
  53.     } else {
  54.         // ambil elemen paling atas
  55.         result_element = peek(S);
  56.         // decrement nilai top / peek
  57.         S.TOP = S.TOP - 1;
  58.     }
  59. }
  60.  
  61. // mencetak elemen / isi sebuah stack
  62. void traversal(Stack S){
  63.     if (isEmpty(S)){
  64.         cout<<"Stack Empty";
  65.     } else {
  66.         cout<<"Top\n^\n|\n";
  67.         for (int i = S.TOP; i >= 0; i--){
  68.         cout<<S.member[i]<<endl;
  69.         }
  70.     }
  71. }
  72.  
  73. int main()
  74. {
  75.     char element;
  76.     createStack(S);
  77.  
  78.     push(S, 'A');
  79.     push(S, 'B');
  80.     push(S, 'C');
  81.  
  82.     pop(S, element);
  83.     // cout<<element;
  84.     traversal(S);
  85.    
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement