Pertemuan 5 - Stack
- Dapatkan link
- X
- Aplikasi Lainnya
Stack
1. Operasi Dasar Stack dengan Array
Deskripsi (Fungsi) Program:
- Push → menambahkan elemen ke stack
- Pop → menghapus elemen dari stack
- Peek/Top → melihat elemen paling atas
- isEmpty → mengecek apakah stack kosong
Code:
Hasil/Output Program:
Penjelasan Program:
Baris Kode | Penjelasan |
#include <bits/stdc++.h> | Memasukkan semua library standar C++ sekaligus. |
using namespace std; | Menggunakan namespace std agar tidak perlu menulis std:: pada fungsi standar (seperti cout). |
#define max 5 | Mendefinisikan makro batas maksimal elemen stack dengan nilai 5. |
class Stack { | Mendeklarasikan class bernama Stack. |
private: | Menentukan hak akses private (hanya bisa diakses oleh fungsi di dalam class ini). |
int arr[max]; | Membuat array arr dengan kapasitas max (5) untuk menyimpan data. |
int top; | Mendeklarasikan variabel top sebagai penunjuk/indeks elemen paling atas. |
public: | Menentukan hak akses public (bisa dipanggil dari luar class). |
// stack kosong | Komentar program. |
Stack() { | Membuat konstruktor untuk class Stack. |
top = -1; | Memberi nilai awal top dengan -1, menandakan stack masih kosong. |
} | Menutup blok konstruktor. |
// push | Komentar program. |
void push(int x) { | Membuat fungsi push untuk menambahkan nilai x ke dalam stack. |
if(top == max - 1) { | Mengecek apakah stack sudah penuh (nilai top sudah di batas akhir array). |
cout << "Stack Overflow\n"; | Menampilkan pesan bahwa stack penuh dan data gagal masuk. |
} else { | Kondisi jika stack belum penuh. |
arr[++top] = x; | Menambah nilai top sebanyak 1, lalu menyimpan nilai x pada indeks tersebut. |
cout << x << " ditambahkan ke Stack\n"; | Menampilkan pesan bahwa nilai x berhasil dimasukkan. |
} | Menutup blok else. |
} | Menutup blok fungsi push. |
// pop | Komentar program. |
void pop() { | Membuat fungsi pop untuk menghapus elemen paling atas dari stack. |
if(top == -1) { | Mengecek apakah stack sedang kosong. |
cout << "Stack Underflow\n"; | Menampilkan pesan error karena tidak ada data yang bisa dihapus. |
} else { | Kondisi jika stack memiliki data. |
cout << arr[top--] << " dihapus...\n"; | Menampilkan elemen yang dihapus, lalu mengurangi nilai top sebanyak 1 (data dianggap terhapus). |
} | Menutup blok else. |
} | Menutup blok fungsi pop. |
// peek | Komentar program. |
void peek() { | Membuat fungsi peek untuk melihat nilai elemen paling atas tanpa menghapusnya. |
if(top == -1) { | Mengecek apakah stack sedang kosong. |
cout << "Stack Kosong\n"; | Menampilkan pesan bahwa tidak ada elemen untuk dilihat. |
} else { | Kondisi jika stack memiliki data. |
cout << "Element Paling Atas: " ... | Menampilkan nilai elemen yang berada pada indeks top. |
} | Menutup blok else. |
} | Menutup blok fungsi peek. |
}; | Menutup dan mengakhiri deklarasi class Stack. |
int main(void) { | Fungsi utama tempat program mulai dieksekusi. |
Stack s; | Menginisialisasi objek baru bernama s dari class Stack. |
s.push(10); | Memanggil fungsi push untuk memasukkan angka 10. |
s.push(20); | Memanggil fungsi push untuk memasukkan angka 20. |
s.push(30); | Memanggil fungsi push untuk memasukkan angka 30. |
s.peek(); | Memanggil fungsi peek (akan menampilkan angka 30 sebagai elemen teratas). |
s.pop(); | Memanggil fungsi pop (akan menghapus angka 30 dari stack). |
s.peek(); | Memanggil fungsi peek lagi (akan menampilkan angka 20 sebagai elemen teratas baru). |
return 0; | Mengakhiri fungsi utama dengan status normal/berhasil. |
} | Menutup fungsi main. |
2. Operasi Dasar Stack dengan Linked List
Deskripsi (Fungsi) Program:
- Push → menambah node di depan
- Pop → menghapus node di depan
- Peek → melihat data paling atas
- isEmpty → cek apakah stack kosong
Code:
Hasil/Output Program:
Penjelasan Program:
Baris Kode | Penjelasan |
#include <bits/stdc++.h> | Memasukkan semua library standar C++ sekaligus. |
using namespace std; | Menggunakan namespace std agar tidak perlu menulis std::. |
struct Node { | Mendeklarasikan struktur bernama Node sebagai pembentuk linked list. |
int data; | Variabel untuk menyimpan nilai/data pada node tersebut. |
Node* next; | Pointer untuk menunjuk ke node selanjutnya di dalam stack. |
}; | Menutup struktur Node. |
class Stack { | Mendeklarasikan class bernama Stack. |
private: | Menentukan hak akses private (hanya bisa diakses di dalam class ini). |
Node* top; | Mendeklarasikan pointer top sebagai penunjuk node paling atas. |
public: | Menentukan hak akses public (bisa dipanggil dari luar class). |
Stack() { | Membuat konstruktor untuk class Stack. |
top= NULL; | Mengatur top bernilai NULL, menandakan stack baru dibuat (kosong). |
} | Menutup blok konstruktor. |
// push | Komentar program. |
void push(int x) { | Membuat fungsi push untuk menambahkan nilai x ke dalam stack. |
Node* newNode = new Node(); | Mengalokasikan memori baru secara dinamis untuk sebuah node baru. |
newNode->data = x; | Mengisi nilai data pada node baru dengan angka x. |
newNode->next = top; | Mengaitkan node baru dengan node teratas sebelumnya (top). |
top = newNode; | Menggeser penunjuk top ke node yang baru saja dibuat. |
cout << x << " ditambahkan...\n"; | Menampilkan pesan bahwa nilai x berhasil dimasukkan. |
} | Menutup blok fungsi push. |
// pop | Komentar program. |
void pop() { | Membuat fungsi pop untuk menghapus node paling atas. |
if(top == NULL) { | Mengecek apakah stack sedang kosong. |
cout << "Stack Underflow\n"; | Menampilkan pesan error karena tidak ada data untuk dihapus. |
return; | Langsung keluar dari fungsi jika stack kosong. |
} | Menutup blok if. |
Node* temp = top; | Membuat pointer sementara (temp) untuk menyimpan node paling atas. |
cout << temp->data << " dihapus...\n"; | Menampilkan data yang akan dihapus. |
top = top->next; | Menggeser penunjuk top ke node di bawahnya. |
delete temp; | Menghapus node lama (yang tersimpan di temp) dari memori. |
} | Menutup blok fungsi pop. |
// peek | Komentar program. |
void peek() { | Membuat fungsi peek untuk melihat nilai elemen teratas tanpa dihapus. |
if(top == NULL) { | Mengecek apakah stack sedang kosong. |
cout << "Stack Kosong\n"; | Menampilkan pesan bahwa tidak ada elemen untuk dilihat. |
} else { | Kondisi jika stack memiliki data. |
cout << "Elemen Paling Atas: " ... | Menampilkan nilai data dari node yang ditunjuk oleh top. |
} | Menutup blok else. |
} | Menutup blok fungsi peek. |
// cek empty | Komentar program. |
bool isEmpty() { | Membuat fungsi untuk memeriksa status kekosongan stack. |
return(top == NULL); | Mengembalikan nilai true jika kosong (NULL), dan false jika ada isinya. |
} | Menutup blok fungsi isEmpty. |
}; | Menutup dan mengakhiri deklarasi class Stack. |
int main(void) { | Fungsi utama tempat eksekusi program dimulai. |
Stack s; | Menginisialisasi objek baru bernama s dari class Stack. |
s.push(10); | Memanggil fungsi push untuk memasukkan angka 10. |
s.push(20); | Memanggil fungsi push untuk memasukkan angka 20. |
s.push(30); | Memanggil fungsi push untuk memasukkan angka 30. |
s.peek(); | Memanggil fungsi peek (menampilkan 30 sebagai elemen teratas). |
s.pop(); | Memanggil fungsi pop (menghapus node berisi angka 30). |
s.peek(); | Memanggil fungsi peek lagi (menampilkan 20 sebagai elemen teratas baru). |
return 0; | Mengakhiri program dengan status normal. |
} | Menutup fungsi main. |
- Dapatkan link
- X
- Aplikasi Lainnya
Komentar
Posting Komentar