A. TUJUAN PEMBELAJARAN
Pada pertemuan ini akan dijelaskan tentang mampu memahami konsep Single
Stack, dan algoritma PUSH dan POP pada Single Stack, Mahasiswa mampu memahami
konsep Single Stack, dan algoritma PUSH dan POP pada Single Stack
B. URAIAN MATERI
Pendahuluan
Stack adalah struktur data linier yang mengikuti urutan tertentu di mana
operasi dilakukan. Urutannya mungkin FILO (First In Last Out) atau LIFO (Last In
First Out).
Gambar 4.1 Single Stack
Bagaimana memahami tumpukan secara praktis?
Ada banyak contoh tumpukan di kehidupan nyata. Pertimbangkan contoh
sederhana piring yang ditumpuk satu sama lain di kantin. Pelat yang berada di atas
adalah yang pertama harus dilepas, yaitu pelat yang telah ditempatkan di posisi paling
bawah tetap berada di tumpukan untuk jangka waktu yang paling lama. Jadi, cukup
terlihat mengikuti perintah LIFO / FILO.
Operasi Dasar Stack
Ada dua operasi yang dasar yang bisa dilakukan dalam stack, yaitu :
a. PUSH
Operasi push terjadi apabila tumpukan dalam kondisi yang tidak dalam
kondisi penuh lalu elemen pada urutan paling atas (terakhir) ditambahkan.
b. POP
Operasi push terjadi apabila tumpukan dalam kondisi yang tidak dalam
kondisi kosong lalu elemen pada urutan paling atas (terakhir) diambil kemudian
elemen tersebut dihapus dari stack.
Gambar 4.3 Operasi Pop
a. SINGLE STACK
Kondisi Stack
1) S[n]
Kosong : Top = -1
Bisa Diisi : Top < n -1
2) S[n]
3) S[n]
Gambar 4.7 Illustrasi Single Stack (c)
Penuh : Top = n – 1
Ada isinya : Top > n-1
int Stack::pop()
{
if (top < 0) {
cout << "Stack Underflow";
return 0;
}
else {
int x = a[top--];
return x;
}
}
int Stack::peek()
{
if (top < 0) {
cout << "Tumpukan Kosong";
return 0;
}
else {
int x = a[top];
return x;
}
}
bool Stack::isEmpty()
{
return (top < 0);
}
// Program untuk menguji fungsi di atas int
main()
{
class Stack s;
s.push(10);
s.push(20);
s.push(30);
cout << s.pop() << " Dikeluarkan dari tumpukan\n";
return 0;
}
Hasil dari program diatas yaitu
10 didorong ke dalam tumpukan 20
didorong ke dalam tumpukan 30
didorong ke dalam tumpukan
30 ikeluarkan dari tumpukan
C. SOAL LATIHAN/TUGAS
1. Susunlah sebuah program C++ untuk menyiapkan array 1 dimensi yang digunakan
sebagai Stack S sebanyak 10 elemen, bertipe integer. Kemudian lakukan proses simpan
data ke stack (PUSH) atau proses mengeluarkan isi stack (POP) dengan proses sebagai
berikut:
a. Inputkan data dari keyboard. Bila data yang diinputkan bernilai 999, maka proses
selesai.
b. Bila data yang diinput bernilai >= 60, maka periksa kondisi stack. Bila stack masih
bisa diisi, maka simpan data tersebut (PUSH) kedalam stack, dan proses diulang
kembali mulai no 1. Tapi bila stack sudah penuh, data tidak jadi disimpan,
kemudian cetak perkataan “Stack Penuh”, dan proses selesai.
c. Bila data yang diinputkan <60, maka periksa kondisi stack. Bila stack ada isinya,
maka ambil isi stack dan cetak ke layar, kemudian proses diulang kembali mulai no.
1. Bila stack taka da isinya, maka cetak perkataan “ Stack Kosong”, dan proses
selesai.
2. Mengisi (PUSH) stack sampai PENUH, dan mengambil (POP) isi stack sampai
KOSONG> Susunlah program C++ untuk menyiapkan array 1 dimensi yang
digunakan sebagai Stack S sebanyak 10 elemen bertipe integer. Kemudian inputkan
data (nilai numerik) dan simpan (PUSH) ke stack S. Proses input dan PUSH selesai
bila data yang diinputkan bernilai = 999, atau Stack S Penuh. (Nilai 999 dipakai
sebagai end of data, tidak ikut diPush ke stack S). Setelah itu keluarkan (POP) isi stack
dan cetak ke layar satu per satu sampai stack menjadi kosong.
3. Tulis program (potongan program) untuk menginput data melalui keyboard satu
persatu dan mem Push data tersebut ke Stack sampai stack penuh tak bisa diisi lagi
4. Tulis program (potongan program) untuk mengeluarkan (POP) isi Stack satu persatu
dan mencetaknya sampai stack menjadi kosong.
5. Tulislah ciri dari single stack untuk kondisi sebagai berikut:
a. Kosong
b. Penuh
c. Bisa diisi
d. Ada isinya