Advertisement
JonathanA007

Jonathan Arya Priguna_235150301111015/Stack Soal 2

Apr 7th, 2024 (edited)
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.00 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4.  
  5. // Mendefinisikan struktur node untuk merepresentasikan elemen dalam tumpukan
  6. struct node {
  7.     char data;
  8.     struct node *next;
  9. };
  10.  
  11. // Memberi alias untuk struct node menjadi node
  12. typedef struct node node;
  13.  
  14. // Variabel global untuk menunjukkan puncak (top) tumpukan, pilihan pengguna, item yang dimasukkan, jumlah elemen dalam tumpukan, dan status keluar dari program
  15. node *top = NULL;
  16. int choice;
  17. char item;
  18. int count = 0;
  19. int keluar = 0;
  20.  
  21. // Deklarasi prototipe fungsi-fungsi
  22. void push(char);
  23. void pop();
  24. void printAll();
  25. void menu();
  26.  
  27. // Fungsi utama
  28. int main() {
  29.     // Looping menu utama
  30.     while (!keluar) {
  31.         menu();
  32.     }
  33.  
  34.     return 0;
  35. }
  36.  
  37. // Fungsi untuk menambahkan elemen ke tumpukan
  38. void push(char item) {
  39.     // Membuat node baru
  40.     node *temp = new node;
  41.     temp->data = item;
  42.     temp->next = NULL;
  43.  
  44.     // Memasukkan node baru ke dalam tumpukan
  45.     if (top == NULL) {
  46.         top = temp;
  47.     } else {
  48.         node *current = top;
  49.         while (current->next != NULL) {
  50.             current = current->next;
  51.         }
  52.         current->next = temp;
  53.     }
  54.     cout << "\n# PUSH : No urut/index : " << count << ", Push : " << item;
  55.     count++;
  56. }
  57.  
  58. // Fungsi untuk menghapus elemen dari tumpukan
  59. void pop() {
  60.     // Mengambil elemen dari tumpukan
  61.     if (top == NULL) {
  62.         cout << "\n## Stack kosong";
  63.     } else {
  64.         node *current = top;
  65.         node *prev = NULL;
  66.  
  67.         while (current->next != NULL) {
  68.             prev = current;
  69.             current = current->next;
  70.         }
  71.  
  72.         char item = current->data;
  73.         delete current;
  74.         count--;
  75.  
  76.         if (prev != NULL) {
  77.             prev->next = NULL;
  78.         } else {
  79.             top = NULL;
  80.         }
  81.  
  82.         cout << "\n##POP hasil: " << item;
  83.         cout << "\n##jumlah item dalam stack : " << count;
  84.     }
  85. }
  86.  
  87. // Fungsi untuk mencetak semua elemen dalam tumpukan
  88. void printAll() {
  89.     // Mencetak semua elemen dalam tumpukan
  90.     cout << "\n## Ukuran Tumpukan : " << count;
  91.     node *temp = top;
  92.     int i = count;
  93.     while (temp != NULL) {
  94.         cout << "\n## No Urut/index : " << i << ", Nilai :" << temp->data;
  95.         temp = temp->next;
  96.         i--;
  97.         cout << "\nJonathan Arya Priguna" << endl;
  98.         cout << "235150301111015" << endl;
  99.     }
  100. }
  101.  
  102. // Fungsi untuk menampilkan menu operasi tumpukan
  103. void menu() {
  104.     // Menampilkan pilihan menu dan melakukan aksi yang sesuai
  105.     cout << "\nMasukkan operasi yang akan dilakukan (1:push, 2:pop, 3:print) : ";
  106.     cin >> choice;
  107.     switch (choice) {
  108.         case 1:
  109.             cout << "\nMasukkan huruf yang akan dipush : ";
  110.             cin >> item;
  111.             push(item);
  112.             break;
  113.         case 2:
  114.             pop();
  115.             break;
  116.         case 3:
  117.             printAll();
  118.             break;
  119.         default:
  120.             cout << "\n1:push, 2:pop, 3:print\n";
  121.             keluar = 1;
  122.             break;
  123.     }
  124. }
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement