Tugas Pertemuan 5 - Implementasi Stack di C++


Nama      : Azka Fairus Syamsa

NRP        : 5025251067

Kelas      : Struktur Data (D)


Operasi Dasar Stack

  1. Push → menambahkan elemen ke stack
  2. Pop → menghapus elemen dari stack
  3. Peek/Top → melihat elemen paling atas
  4. isEmpty → mengecek apakah stack kosong
  5. isFull → mengecek apakah stack penuh (untuk array)

Contoh Implementasi dengan Array:

































Penjelasan Kode:

Kode tersebut merupakan implementasi sederhana struktur data stack (tumpukan) menggunakan array dalam bahasa C++. Stack bekerja dengan prinsip LIFO (Last In, First Out), yaitu elemen yang terakhir dimasukkan akan menjadi yang pertama dikeluarkan. Pada kode ini, kapasitas stack ditentukan dengan konstanta MAX sebesar 5. Di dalam class Stack, terdapat array arr untuk menyimpan data dan variabel top yang berfungsi sebagai penunjuk posisi elemen teratas. Saat stack baru dibuat, top diinisialisasi ke -1 yang menandakan stack kosong.

Fungsi push(int x) digunakan untuk menambahkan elemen ke dalam stack. Sebelum menambahkan, program akan mengecek apakah stack sudah penuh (overflow). Jika belum penuh, nilai top akan dinaikkan lalu elemen dimasukkan ke dalam array. Fungsi pop() digunakan untuk menghapus elemen teratas, dengan terlebih dahulu memeriksa apakah stack kosong (underflow). Jika tidak kosong, elemen teratas akan diambil lalu top dikurangi. Sementara itu, fungsi peek() digunakan untuk melihat elemen teratas tanpa menghapusnya.

Pada fungsi main(), dibuat objek stack dan dilakukan beberapa operasi seperti menambahkan elemen (10, 20, 30), menampilkan elemen teratas, menghapus satu elemen, lalu menampilkan kembali elemen teratas. Secara keseluruhan, kode ini menunjukkan cara kerja dasar stack menggunakan array lengkap dengan penanganan kondisi penuh dan kosong.


Stack dengan Link List

Pada implementasi ini:

  • Stack direpresentasikan sebagai Linked List
  • Setiap elemen disebut node
  • Setiap node memiliki:
    • data
    • pointer ke node berikutnya

👉 Top stack = node paling depan (head)


Kelebihan Stack dengan Linked List

✅ Tidak memiliki batas ukuran (dinamis)
✅ Tidak terjadi overflow seperti array (selama memori tersedia)


Contoh Implementasi dengan Linked List:


Penjelasan Kode:

Kode ini merupakan implementasi struktur data stack (tumpukan) menggunakan linked list (pointer) dalam bahasa C++. Berbeda dengan versi array, stack di sini tidak memiliki batas ukuran tetap karena memanfaatkan alokasi memori dinamis. Struktur Node digunakan untuk merepresentasikan setiap elemen stack, yang berisi data (int data) dan pointer ke node berikutnya (Node* next). Pada class Stack, terdapat pointer top yang menunjuk ke elemen teratas stack, dan diinisialisasi dengan NULL yang berarti stack kosong.

Fungsi push(int x) digunakan untuk menambahkan elemen baru ke stack dengan cara membuat node baru, mengisi datanya, lalu menghubungkannya ke node sebelumnya sebelum menjadikannya sebagai top. Fungsi pop() digunakan untuk menghapus elemen teratas dengan memindahkan pointer top ke node berikutnya dan menghapus node lama dari memori, serta menangani kondisi jika stack kosong (underflow). Fungsi peek() berfungsi untuk melihat nilai elemen teratas tanpa menghapusnya, sedangkan isEmpty() digunakan untuk mengecek apakah stack kosong atau tidak.

Pada fungsi main(), program membuat objek stack, menambahkan beberapa elemen (10, 20, 30), menampilkan elemen teratas, menghapus satu elemen, lalu menampilkan kembali elemen teratas. Secara keseluruhan, kode ini menunjukkan cara kerja stack berbasis linked list yang lebih fleksibel dibandingkan array karena tidak dibatasi kapasitas tetap.


Source Code Implementasi Stack



Comments

Popular Posts