A. TUJUAN PEMBELAJARAN
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
b. POP
a. SINGLE STACK
Kondisi Stack
1) S[n]
Kosong : Top = -1
Bisa Diisi : Top < n -1
2) S[n]
3) S[n]
Struktur Data
Gambar 4.7 Illustrasi Single Stack (c)
Penuh : Top = n – 1
Ada isinya : Top > n-1
Struktur Data
b. Kondisi Single Stack
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
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
D. REFERENSI
Drozdek, A. (2012). Data Structures and Algorithms in C++, Fourth Edition. United
States: Changeage Learning.
Goodrich, M. T., Tamassia, R., & Mount, D. M. (2011). Data Structures and
Algorithms in C++, Second Edition. United States: John Wiley & Sons, Inc.
Jain, H. (2016). Problem Solving in Data Structures & Algorithms Using C++ First
Edition. CreateSpace Independent Publishing Platform.
Karumanchi, N. (2017). Data Structures And Algorithms Made Easy. Bombay:
CareerMonk Publications.
Weiss, M. A. (2014). Data structures and algorithm analysis in C++, Fourth
Edition. Florida: Addison Wesley.
DOUBLE STACK
A. TUJUAN PEMBELAJARAN
Bab ini akan menjelaskan dan memahami konsep Double Stack, dan
algoritma PUSH dan POP pada double Stack, mahasiswa mampu dan memahami
konsep Double Stack, dan algoritma PUSH dan POP pada double Stack
B. URAIAN MATERI
Buat struktur data double Stack yang mewakili dua tumpukan. Implementasi
double Stack harus menggunakan hanya satu array, yaitu, kedua tumpukan harus
menggunakan array yang sama untuk menyimpan elemen.
Double Stack
Apa itu Double Stack?
Kami juga dapat mempertahankan dua tumpukan dalam satu array.
Jenis implementasi ini dikenal sebagai double stack. Dalam implementasi ini
kedua tumpukan tumbuh berlawanan arah. Satu dari indeks yang lebih rendah
ke indeks yang lebih tinggi dan yang kedua dari indeks yang lebih tinggi ke
indeks yang lebih rendah.
public:
DStack();
void pushA(int item);
void pushB(int item);
int popA (int *item);
int popB (int *item);
};
Proses :
a. AWAL(Inisialisasi)
b. PUSH1, Push untuk stack1
c. POP1, Pop untuk stack1
d. PUSH2, Push untuk stack2
e. POP2, Pop untuk stack
: void AWAL(void)
{
1) ILUSTRASI
public:
DStack();
void pushA(int item);
void pushB(int item);
int popA (int *item);
int popB (int *item);
};
top1++;
ele[top1] = item;
cout<<"\nItem disisipkan di Stack1 : "<< item;
}
top2--;
ele[top2] = item;
*item = ele[top1--];
return 0;
}
*item = ele[top2++];
return 0;
}
int main()
{
int item = 0;
DStack s = DStack();
s.pushA(10);
s.pushA(20);
s.pushA(30);
s.pushB(40);
s.pushB(50);
s.pushB(60);
if( s.popA(&item) == 0 )
cout<<"\nMenghapus Item dari Stack1 : "<<
item; if( s.popA(&item) == 0 )
cout<<"\nMenghapus Item dari Stack1 : "<<
item; if( s.popA(&item) == 0 )
cout<<"\nMenghapus Item dari Stack1 : "<< item;
if( s.popB(&item) == 0 )
cout<<"\nMenghapus Item dari Stack2 : "<<
item; if( s.popB(&item) == 0 )
cout<<"\nMenghapus Item dari Stack2 : "<<
item; if( s.popB(&item) == 0 )
cout<<"\nMenghapus Item dari Stack2 : "<< item;
cout<< endl;
return 0;
}
C. SOAL LATIHAN/TUGAS