Advertisement
waydub12

stack linked list

Apr 27th, 2020
635
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. using namespace std;
  3.  
  4. struct Element{
  5.     char member;
  6.     // pointer untuk menunjukkan Element Selanjutnya
  7.     Element* next;
  8. };
  9.  
  10. // membuat alias sebuah pointer
  11. typedef Element* pointer;
  12. // membuat alias sebuah stack
  13. typedef pointer Stack;
  14. Stack S;
  15.  
  16. // membuat sebuah stack
  17. void createStack(Stack& Top){
  18.     Top = NULL;
  19. }
  20.  
  21. // membuat elemen baru yang akan dimasukkan ke stack
  22. void createElement(pointer& new_element){
  23.     // mengalokasikan memori untuk sebuah elemen baru
  24.     new_element = new Element;
  25.     cout<<"Elem (char) : "; cin>>new_element->member;
  26.     new_element->next = NULL;
  27. }
  28.  
  29. int peek(Stack Top){
  30.     return Top->member;
  31. }
  32.  
  33. bool isEmpty(Stack Top){
  34.     if (Top == NULL){
  35.         return true;
  36.     } else {
  37.         return false;
  38.     }
  39. }
  40.  
  41. // sama seperti insert first
  42. void push(Stack& Top, pointer pNew){
  43.     cout<<"Push Stack"<<endl;
  44.     if (isEmpty(Top))
  45.         Top = pNew;
  46.     else {
  47.         pNew->next = Top;
  48.         Top = pNew;
  49.     }
  50. }
  51.  
  52. // sama seperti delete first
  53. void pop(Stack& Top, pointer& pDel){
  54.     cout<<"Pop Stack"<<endl;
  55.     if (isEmpty(Top)){
  56.         cout<<"Stack Underflow"<<endl;
  57.         pDel = NULL;
  58.     } else if (Top->next == NULL){
  59.         pDel = Top;
  60.         Top = NULL;
  61.     } else {
  62.         pDel = Top;
  63.         Top = Top->next;
  64.         pDel->next = NULL;
  65.     }
  66. }
  67.  
  68. void traversal(Stack Top){
  69.     pointer pHelp = Top;
  70.     if (isEmpty(Top)){
  71.         cout<<"Stack Empty"<<endl;
  72.     } else {
  73.         cout<<"Top\n^\n|\n";
  74.         do {
  75.             cout<<pHelp->member<<endl;
  76.             pHelp = pHelp->next;
  77.         } while(pHelp != NULL);
  78.     }
  79. }
  80.  
  81. int main()
  82. {
  83.     pointer pElement;
  84.     createStack(S);
  85.  
  86.     createElement(pElement);
  87.     push(S, pElement);
  88.     createElement(pElement);
  89.     push(S, pElement);
  90.     createElement(pElement);
  91.     push(S, pElement);
  92.  
  93.     pop(S, pElement);
  94.     traversal(S);
  95.     // cout<<pElement->member;
  96.  
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement