Fakultas Teknologi Informasi Universitas Budi Luhur Kurikulum 1
Fakultas Teknologi Informasi Universitas Budi Luhur Kurikulum 1
Umum 2
Buku Literatur 3
Buku Literatur 4
Buku Literatur 5
materi 1. Stack 2. Queue 3. Linked List 4. Tree 5. Graph 6. Search & Sort 6
Pokok Pembahasan . Stack. Queue. Tree. Graph 7
struktur Peng-alokasi-an memory Stack linear Queue non linear Array (statis) Tree Graph Linked. List (dinamis) Satu dimensi Stack Queue Tree Dua dimensi Graph Linear Stack Queue Non Linear Tree Graph 8
STACK 6. 3 & 7. 3 NESTED LOOP 9
STACK ( TUMPUKAN ) 10
delete insert A stack is an ordered collection of items into which new items may be inserted and from which items may be deleted at one end, called the top of the stack. ( Yedidyah L, Moshe J. A. , and Aaron M. Tenenbaum; Data Structures Using C and C++) 7 6 5 4 3 2 1 11
1. Single Stack Tunggal, satu stack dalam satu collection 1. 1 Ilustrasi Single Stack. Nomor Urut Masuk (PUSH) Nomor Urut Keluar (POP) Top 4 Buku-4 1 3 Buku-3 2 2 Buku-2 3 1 Buku-1 4 Meja 12
Dalam struktur STACK, digunakan istilah : - PUSH untuk : Simpan, atau Masuk, atau Insert, atau Tulis. - POP untuk : Ambil, atau Keluar, atau Delete, atau Baca, atau Hapus Prinsip atau Konsep prosesnya disebut : L I F O ( Last In First Out ) 13
1. 2 Representasi Single Stack menggunakan Array Satu Dimensi. 1. 2. 1 Ilustrasi Single Stack menggunakan Array Satu Dimensi n-1 0 S[ ] 1 2 3 4 5 6 7 8 misal n = 10 9 25 12 17 10 misal dibuat dengan : Top 3 Top X #define n 10 int S[n]; int Top, X; 14
n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 25 12 17 10 PUSH POP Top 3 Top X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah PUSH ( Isi, Masuk, Simpan) maka akan diisi di elemen nomor : ? dan Top akan menunjuk elemen nomor : ? 15
n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 25 12 17 10 PUSH POP Top 3 Top X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah POP ( Keluar, Ambil) maka akan diambil isi elemen nomor : dan Top akan menunjuk elemen nomor ? : ? 16
Ilustrasi Stack. n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 25 12 17 10 Top 3 X Top Diilustrasikan sebagai berikut : n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 X X Top 17
1. 2. 2 Prinsip / Konsep Proses pada Stack LIFO (Last In First Out) 1. 2. 3 Macam Proses pada Stack a. AWAL (Inisialisasi) b. PUSH (Insert, Masuk, Simpan, Tulis) c. POP (Delete, Keluar, Ambil , Baca / Hapus) 18
a) Proses AWAL Catatan : void AWAL(void) { Top = -1; } Untuk memudahkan pembuatan program, maka array untuk Stack dan beberapa variabel yang terkait dibuat bersifat Glabal n-1 0 1 2 3 4 5 6 7 8 9 S[ ] -1 Top X 19
Algoritma dasar untuk PUSH 20
n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 25 12 17 10 Top 3 Top X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah PUSH (Isi, Masuk, Simpan) maka akan diisi di elemen nomor : ? dan Top akan menunjuk elemen nomor : ? 21
n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 25 12 17 10 Top 3 Top X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah PUSH (Isi, Masuk, Simpan) maka akan diisi di elemen nomor : 4 dan Top akan menunjuk elemen nomor : 4 22
Sebelum nilai X di. PUSH Ke Stack 0 S[ ] 1 2 3 4 n-1 5 6 7 8 25 12 17 10 Top 0 1 2 3 4 5 6 Top = Top + 1; S[Top] = X; 15 Top X b. S[Top] = X; Top = Top + 1; n-1 c. Top = Top + 1; X = S[Top]; d. X = S[Top]; Top = Top + 1; 7 8 9 25 12 17 10 15 Top a. 3 Setelah nilai X di. PUSH Ke Stack S[ ] 9 Pilih algoritma yang benar untuk PUSH 4 15 Top X ? 23
A = B; Sebelum : Yang diisi, variabel atau variabel B 25 17 A B A ? A = B; ? Sesudah : A B 24
A = B; Sebelum : Yang diisi adalah : variabel 25 17 A B A A = B; Sesudah : 17 17 A B 25
0 A 1 2 3 17 4 5 Untuk mengisi elemen A[3] Pilih instruksi yang benar : a. A[3] = X; b. X = A[3]; 17 X 26
Sebelum nilai X di. PUSH Ke Stack 0 S[ ] 1 2 3 4 n-1 5 6 7 8 25 12 17 10 Top 0 1 2 3 4 5 6 Top = Top + 1; S[Top] = X; 15 Top X b. S[Top] = X; Top = Top + 1; n-1 c. Top = Top + 1; X = S[Top]; d. X = S[Top]; Top = Top + 1; 7 8 9 25 12 17 10 15 Top a. 3 Setelah nilai X di. PUSH Ke Stack S[ ] 9 Pilih algoritma yang benar untuk PUSH 4 15 Top X ? 27
Sebelum nilai X di. PUSH Ke Stack 0 S[ ] 1 2 3 4 n-1 5 6 7 8 25 12 17 10 Top 0 1 2 3 4 5 6 Top = Top + 1; S[Top] = X; 15 Top X b. S[Top] = X; Top = Top + 1; n-1 c. Top = Top + 1; X = S[Top]; d. X = S[Top]; Top = Top + 1; 7 8 9 25 12 17 10 15 Top a. 3 Setelah nilai X di. PUSH Ke Stack S[ ] 9 Pilih algoritma yang benar untuk PUSH 4 15 Top X 28
Sebelum nilai X di. PUSH Ke Stack 0 S[ ] 1 2 3 4 n-1 5 6 7 8 25 12 17 10 Top 3 15 Top X Setelah nilai X di. PUSH Ke Stack 0 S[ ] 9 1 2 3 Untuk PUSH Algoritma yang benar Top = Top + 1; S[Top] = X; n-1 4 5 6 7 8 9 25 12 17 10 15 Top 4 15 Top X 29
Algoritma PUSH yang benar : Sebelum : 0 S[ ] 1 n-1 2 3 4 5 6 7 8 9 25 12 17 10 Top 0 S[ ] Top = Top + 1; S[Top] = X; 1 2 3 n-1 4 5 6 7 8 9 25 12 17 10 Top Sesudah : 0 S[ ] 1 n-1 2 3 4 25 12 17 10 15 Top 5 6 7 8 9 3 15 Top X Dengan : Top = Top + 1; 4 15 Top X Dengan : S[Top] = X; 4 15 Top X 30
Algoritma PUSH yang SALAH : Sebelum : 0 S[ ] 1 n-1 2 3 4 5 6 7 8 9 25 12 17 10 Top 0 S[ ] S[Top] = X; Top = Top + 1; 1 2 3 n-1 4 5 6 7 8 9 25 12 17 15 Top Sesudah : 0 S[ ] 1 n-1 2 3 4 25 12 17 15 Top 5 6 7 8 9 3 15 Top X Dengan : S[Top] = X; 3 15 Top X Dengan : Top = Top + 1; 4 15 Top X 31
Algoritma dasar untuk PUSH Top = Top + 1; S[Top] = X; atau : Top+= 1; S[Top] = X; Top++; S[Top] = X; S[++Top] = X; 32
Algoritma dasar untuk POP 33
n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 25 12 17 10 Top 3 Top X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah POP ( Keluar, Ambil) maka akan diambil isi elemen nomor : ? dan setelah itu Top akan menunjuk elemen nomor : ? 34
n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 25 12 17 10 Top 3 Top X Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah POP ( Keluar, Ambil) maka akan diambil isi elemen nomor : 3 dan setelah itu Top akan menunjuk elemen nomor : 2 35
Sebelum POP 0 S[ ] 1 n-1 2 3 4 5 6 7 8 25 12 17 10 3 Top X Top Setelah POP 0 S[ ] 9 1 n-1 2 3 4 5 6 7 8 a. X = S[Top]; Top = Top - 1; b. Top = Top - 1; X = S[Top]; c. Top = Top - 1; S[Top] = X; d. S[Top] = X; Top = Top - 1; 9 25 12 17 Top Untuk POP, Pilih algoritma yang benar 2 10 Top X ? 36
Sebelum POP 0 S[ ] 1 n-1 2 3 4 5 6 7 8 25 12 17 10 3 Top X Top Setelah POP 0 S[ ] 9 1 n-1 2 3 4 5 6 7 8 a. X = S[Top]; Top = Top - 1; b. Top = Top - 1; X = S[Top]; c. Top = Top - 1; S[Top] = X; d. S[Top] = X; Top = Top - 1; 9 25 12 17 Top Untuk POP, Pilih algoritma yang benar 2 10 Top X 37
Sebelum POP 0 S[ ] 1 n-1 2 3 4 5 6 7 8 25 12 17 10 3 Top X Top Setelah POP 0 S[ ] 9 1 Untuk POP Algoritma yang benar X = S[Top]; Top = Top - 1; n-1 2 3 4 5 6 7 8 9 25 12 17 Top 2 10 Top X 38
n-1 Sebelum POP 0 S[ ] 1 2 3 4 5 6 7 8 25 12 17 10 X n-1 Isi X 0 1 2 3 4 5 6 7 8 ? Jawab : 9 25 12 17 10 3 Top 0 1 2 3 4 5 6 7 n-1 Pertanyaan : Setelah Top dipindahkan menunjuk S[2] apakah nilai 10 9 masih ada dalam S[3] 10 X Setelah POP S[ ] Pertanyaan : Setelah 10 disimpan di X apakah nilai 10 masih ada dalam S[3] 3 Top S[ ] 9 8 25 12 17 Top ? Jawab : 2 10 Top X 39
n-1 Sebelum POP 0 S[ ] 1 2 3 4 5 6 7 8 25 12 17 10 X n-1 Isi X 0 1 2 3 4 5 6 7 8 Jawab : ? masih ada 9 25 12 17 10 3 Top 0 1 2 3 4 5 6 7 n-1 Pertanyaan : Setelah Top dipindahkan menunjuk S[2] apakah nilai 10 9 masih ada dalam S[3] 10 X Setelah POP S[ ] Pertanyaan : Setelah 10 disimpan di X apakah nilai 10 masih ada dalam S[3] 3 Top S[ ] 9 8 25 12 17 Top Jawab : 2 10 Top X ? masih ada tapi untuk keperluan ilustrasi, nilainya dihapus 40
Algoritma POP yang benar : n-1 Sebelum POP 0 S[ ] 1 2 3 4 5 6 7 8 X = S[Top]; Top = Top - 1; 9 3 25 12 17 10 Top X Kita Ulangi 41
Algoritma POP yang benar : n-1 Sebelum POP 0 S[ ] 1 2 3 4 5 6 7 8 3 Top S[ ] 9 25 12 17 10 0 1 2 3 25 12 17 10 Top X = S[Top]; Top = Top - 1; n-1 4 5 6 7 8 X Dengan : X=S[Top]; 9 3 10 Top X 42
Algoritma POP yang benar : n-1 Sebelum POP 0 S[ ] 1 2 3 4 5 6 7 8 3 Top S[ ] 9 25 12 17 10 0 1 2 3 n-1 4 5 6 7 8 Top n-1 S[ ] 1 2 25 12 17 Top 3 4 5 6 7 8 X Dengan : X=S[Top]; 9 25 12 17 10 0 X = S[Top]; Top = Top - 1; 3 10 Top X Dengan : Top = Top -1; 9 2 10 Top X 43
Algoritma dasar untuk POP X = S[Top]; Top = Top - 1; atau : X = S[Top]; Top-=1; atau : X = S[Top]; Top--; atau : X = S[Top--]; 44
Algoritma POP yang SALAH : Top = Top - 1; X = S[Top]; Sebelum POP S[ ] 3 25 12 17 10 Top 0 S[ ] 1 2 3 n-1 4 5 6 7 8 2 Top n-1 S[ ] 1 2 25 12 3 10 Top Dengan : Top = Top -1; 9 25 12 17 10 0 X 4 5 6 7 8 X Dengan : X = S[Top]; 9 2 17 Top X 45
b) Proses PUSH void PUSH( void) { Top = Top + 1; S[Top] = X; } Catatan : Semua variabel dibuat bersifat GLOBAL c) Proses POP void POP(void) { X = S[Top]; Top = Top - 1; } 46
#include<stdio. h> void AWAL (void); void PUSH(void); void POP(void); define n 10 int S[n]; int Top, X; void main( ) { AWAL( ); scanf(“%i”, &X); PUSH(); POP( ); printf(“%i”, X); } void AWAL(void) { Top = -1; } void PUSH (void) { Top = Top + 1; S[top] = X; } void POP (void) { X = S[top]; Top = Top - 1; } Semua variabel bersifat GLOBAL 47
Ilustrasi Stack. n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 25 12 17 10 3 Top X Top Diilustrasikan sebagai berikut : n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 X X Top 48
1. 2. 4 Kondisi Stack. a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA 49
Kondisi Stack. lawannya a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA 50
Kondisi Stack. n-1 0 1 2 3 4 5 6 7 8 9 1 a. KOSONG b. PENUH c. BISA DIISI Top n-1 0 2 Kondisi Stack : 1 2 3 4 5 6 7 8 d. ADA ISINYA 9 X X Top n-1 0 3 1 2 3 X X 4 5 6 7 8 9 X X X Top 51
Kondisi Stack. n-1 0 1 2 3 4 5 6 7 8 9 1 a. KOSONG Gambar : Top n-1 0 2 1 2 3 4 5 6 7 8 9 X X 1 2 3 X X Gambar : n-1 0 b. PENUH ? ? c. BISA DIISI Top 3 Kondis Stack : 4 5 6 7 8 9 ? d. ADA ISINYA Gambar : ? X X X Top 52
Kondisi Stack. n-1 0 1 2 3 4 5 6 7 8 9 1 a. KOSONG Gambar : Top n-1 0 2 1 2 3 4 5 6 7 8 9 X X 1 2 3 X X Gambar : n-1 0 b. PENUH 1 ? c. BISA DIISI Top 3 Kondis Stack : 4 5 6 7 8 9 ? d. ADA ISINYA Gambar : ? X X X Top 53
Kondisi Stack. n-1 0 1 2 3 4 5 6 7 8 9 1 a. KOSONG Gambar : Top n-1 0 2 1 2 3 4 5 6 7 8 9 X X 1 2 3 X X Gambar : n-1 0 b. PENUH 1 3 c. BISA DIISI Top 3 Kondis Stack : 4 5 6 7 8 9 ? d. ADA ISINYA Gambar : ? X X X Top 54
Kondisi Stack. n-1 0 1 2 3 4 5 6 7 8 9 1 a. KOSONG Gambar : Top n-1 0 2 1 2 3 4 5 6 7 8 9 X X 1 2 3 X X Gambar : n-1 0 b. PENUH 1 3 c. BISA DIISI Top 3 Kondis Stack : 4 5 6 7 8 9 1 2 d. ADA ISINYA Gambar : ? X X X Top 55
Kondisi Stack. n-1 0 1 2 3 4 5 6 7 8 9 1 a. KOSONG Gambar : Top n-1 0 2 1 2 3 4 5 6 7 8 9 X X 1 2 3 X X Gambar : n-1 0 b. PENUH 1 3 c. BISA DIISI Top 3 Kondis Stack : 4 5 6 7 8 9 1 2 d. ADA ISINYA Gambar : 2 3 X X X Top 56
Kondisi Stack. 0 1 2 3 4 5 6 7 8 n-1 9 X X Top 0 3 cirinya a. KOSONG : ? b. PENUH : ? c. BISA DIISI : ? 1 Top 0 Kondis Stack : 1 2 3 3 1 4 5 6 7 8 2 n-1 9 X X X X X d. ADA ISINYA : 2 ? 3 Top 57
Kondisi Stack. 0 1 2 3 4 5 6 7 8 n-1 9 X X Top 0 3 cirinya a. KOSONG : Top = -1 b. PENUH : ? c. BISA DIISI : ? 1 Top 0 Kondis Stack : 1 2 3 3 1 4 5 6 7 8 2 n-1 9 X X X X X d. ADA ISINYA : 2 ? 3 Top 58
Kondisi Stack. 0 1 2 3 4 5 6 7 8 n-1 9 X X 3 a. KOSONG : Top = -1 b. PENUH : Top = n-1 1 2 3 3 c. BISA DIISI : Top 0 cirinya 1 Top 0 Kondis Stack : 1 4 5 6 7 8 2 n-1 9 X X X X X d. ADA ISINYA : 2 ? ? 3 Top 59
Kondisi Stack. 0 1 2 3 4 5 6 7 8 n-1 9 X X 3 a. KOSONG : Top = -1 b. PENUH : Top = n-1 1 2 3 3 c. BISA DIISI : Top < n-1 Top 0 cirinya 1 Top 0 Kondis Stack : 1 4 5 6 7 8 2 n-1 9 X X X X X d. ADA ISINYA : 2 ? 3 Top 60
Kondisi Stack. 0 1 2 3 4 5 6 7 8 n-1 9 X X 3 a. KOSONG : Top = -1 b. PENUH : Top = n-1 1 2 3 3 c. BISA DIISI : Top < n-1 Top 0 cirinya 1 Top 0 Kondis Stack : 1 4 5 6 7 8 2 n-1 9 X X X X X d. ADA ISINYA : Top > -1 2 3 Top 61
Kondisi Stack. n-1 0 1 2 3 4 5 6 7 8 9 X X Top Kondis Stack : cirinya a. KOSONG Top = -1 b. PENUH Top = n-1 c. BISA DIISI Top < n-1 d. ADA ISINYA Top > -1 62
1. 2. 4 Kondisi Stack. c i r i Kondisi Stack Ilustrasi gambar (posisi Top) a. KOSONG tak ada isinya Top = -1 Gambar 1 b. PENUH tak bisa diisi lagi Top = n-1 Gambar 3 c. BISA DIISI (kebalikan dari PENUH) Top < n-1 Gambar 1 dan 2 d. ADA ISINYA (kebalikan dari KOSONG) Top > -1 Gambar 2 dan 3 0 1 Top 1 2 2 3 4 0 5 1 6 2 7 3 8 4 n-1 9 5 6 7 8 n-1 9 X X Top 3 0 1 2 3 X X 4 5 6 7 8 n-1 9 X X X Top 63
1. 2. 5 Algoritma PUSH dan POP yang lengkap. 64
a. Algoritma yang lengkap untuk proses PUSH n-1 0 1 2 3 X X 4 5 6 7 8 9 Bila ada instruksi PUSH maka akan d isi di elemen nomor : ? Top 65
a. Algoritma yang lengkap untuk proses PUSH n-1 0 1 2 3 4 5 6 7 8 9 X X Bila ada instruksi PUSH maka akan d isi di elemen nomor : ? Top n-1 0 1 2 3 X X 4 5 6 7 8 9 Bila ada instruksi PUSH maka akan d isi di elemen nomor : 4 Top 66
a. Algoritma yang lengkap untuk proses PUSH n-1 0 1 2 3 4 5 6 7 8 9 X X Bila ada instruksi PUSH maka akan diisi di elemen nomor : 4 Top n-1 0 1 2 3 X X 4 5 6 7 8 9 X X X Top Dalam kondisi PENUH Bolehkah melakukan PUSH ? Jawab : ? 67
a. Algoritma yang lengkap untuk proses PUSH n-1 0 1 2 3 4 5 6 7 8 9 X X Bila ada instruksi PUSH maka akan d isi di elemen nomor : 4 Top n-1 0 1 2 3 X X 4 5 6 7 8 9 X X X Top Dalam kondisi PENUH Bolehkah melakukan PUSH ? Jawab : TIDAK BOLEH 68
a. Algoritma yang lengkap untuk proses PUSH Ilustrasi Stack 0 1 2 3 n-1 4 5 6 7 8 9 X X Top Bila Stack PENUH, maka Tidak Boleh melakukan PUSH sehingga, sebelum PUSH, perlu dioeriksa apakah Stack dalam keadaan : a. apakah KOSONG b. apakah PENUH c. apakah BISA DIISI ? d. apakah ADA ISINYA 69
a. Algoritma yang lengkap untuk proses PUSH Ilustrasi Stack 0 1 2 3 4 n-1 5 6 7 8 9 X X Top Bila BISA DIISI silahkan PUSH sebaliknya (else) Bila PENUH jangan PUSH sebaliknya (else) silahkan PUSH 70
a. Algoritma yang lengkap untuk proses PUSH void PUSH(void) { if ( BISA DIISI ) { Top = Top + 1; S[Top] = X; } else printf( “Stack Penuh”); } 71
a. Algoritma yang lengkap untuk proses PUSH void PUSH(void) { if ( Top < n-1 ) { Top = Top + 1; S[Top] = X; } else printf( “Stack Penuh”); } atau void PUSH(void) { if ( Top == n-1 ) printf( “Stack Penuh”); else { Top = Top + 1; S[Top] = X; } } Bila BISA DIISI lakukan PUSH Bila PENUH jangan PUSH else lakukan PUSH 72
b. Algoritma yang lengkap untuk proses POP void POP(void) { if (Top > -1 ) { X = S[Top]; Top = Top-1; } else printf(“Stack Kosong”); } Bila ADA ISINYA lakukan POP atau : Algoritma yang lengkap untuk proses POP dengan ‘logika terbalik’ void POP(void) { if ( Top == -1 ) printf(“Stack Kosong”); else { X = S[Top]; Top = Top - 1; } } Bila KOSONG jangan POP else lakukan POP 73
1. 2. 6 Contoh Soal PUSH dan POP. Baca sendiri di diktat 74
1. 3 Aplikasi Stack. 1. 3. 1. Memeriksa kelengkapan pasangan kurung buka dan kurung tutup suatu arithmetic statement 1. 3. 2. A + B * ( C - D) / ( E + F ) BENAR A + B * ( C - D / ( E + F ) SALAH Merobah (konversi) bentuk INFIX menjadi bentuk POSTFIX INFIX POSTFIX A + B + C * D A B + C D * + A + (B + C) * D A B C + D * + 1. 3. 3. Mencatat Return Address oleh Operating System sewaktu menjalankan sebuah program pada pelaksanaan call suatu function. 75
1. 4 Pointer sebagai penunjuk Stack. a. Menyiapkan Stack dan Pointer : 0 Top 1 2 3 4 5 6 7 8 9 n-1 10 Batas. Atas Dasar define n 11 int S[n], *Top, *Batas. Atas, *Dasar = &S[-1]; Top = &S[-1]; Batas. Atas = &S[n-1]; 76
0 1 2 3 4 5 6 7 8 9 Top n 10 Batas. Atas Dasar a. Algoritma untuk PUSH if(Top < Batas. Atas) Top++; *Top = X; else printf(“Stack Penuh); b. Algoritma untuk POP if(Top > Dasar) X = *Top; Top--; else printf(“Stack Penuh); 77
1. 5 Representasi Stack menggunakan structure. Perhatikan contoh berikut ini : a. Menyiapkan Stack. #define MAXSTACK 10 tipe : char typedef char Item. Type; typedef struct Stack. Tag { int Top; Item. Type S[MAXSTACK]; } Stack. Type; b. dibuat 10 elemen S[0] sampai dengan S[9] Initialisasi. void Intitialize(Stack. Type { P->Top = -1; } *P ) 78
1. 5 Representasi Stack menggunakan structure. Perhatikan contoh berikut ini : c. Proses PUSH. void PUSH(Item. Type item, Stack. Type *P) { if(P->Top >= MAXSTACK-1) printf(“Stack Penuh”); else P->entry[++P->Top] = item; d. Proses POP. void POP(Item. Type *Q, Stack. Type *P) { if(P->Top <= -1) printf(“Stack Kosong”); else *Q = P->S[P->Top--]; } 79
1. 6 Soal Latihan Mandiri. 0 1 2 3 4 5 6 n-1 X X Top Soal-I. Untuk Stack yang diilustrasikan pada Gambar diatas : 1. Sebutkan ciri bahwa Stack : a. Kosong 2. Tulis algoritma dasar untuk: b. Penuh a. PUSH c. Bisa diisi b. POP d. Ada isinya 3. Tulis algoritma yang lengkap untuk: a. PUSH b. POP 4. Tulis program (penggalan program) untuk menginput data melalui keyboard satu persatu dan mem Push data tersebut ke Stack sampai Stack penuh tak bisa diisi lagi. 5. Tulis program (penggalan program) untuk mengeluarkan (POP) isi Stack satu per satu dan mencetaknya, sampai Stack menjadi kosong. 80
6. Bila Stack berisi bilangan integer, maka susun algoritma untuk menghitung dan mencetak total isi Stack tanpa menghapus isi Stack. 7. Dianggap tempat yang tersedia mesih lebih dari 10 tempat. Tulis program (penggalan program) untuk menginput sebanyak 10 buah data melalui keyboard satu persatu dan mem Push data tersebut ke Stack. stack terisi lebih dari 10 elemen. Tulis program 8. Dipastikan (penggalan program) untuk mengeluarkan (POP) isi stack sebanyak 10 elemen, satu per satu dan mencetaknya ke layar. 81
6. Bila Stack berisi bilangan integer, maka susun algoritma untuk menghitung dan mencetak total isi Stack tanpa menghapus isi Stack. 82
6. Bila Stack berisi bilangan integer, maka susun algoritma untuk menghitung dan mencetak total isi Stack tanpa menghapus isi Stack. 83
6. Bila Stack berisi bilangan integer, maka susun algoritma untuk menghitung dan mencetak total isi Stack tanpa menghapus isi Stack. n-1 0 S[ ] 1 2 3 4 5 6 7 8 9 25 12 17 10 Top 3 Top 64 X Total 84
7. Dianggap tempat yang tersedia mesih lebih dari 10 tempat. Tulis program (penggalan program) untuk menginput sebanyak 10 buah data melalui keyboard satu persatu dan mem Push data tersebut ke Stack. 85
7. Dianggap tempat yang tersedia mesih lebih dari 10 tempat. Tulis program (penggalan program) untuk menginput sebanyak 10 buah data melalui keyboard satu persatu dan mem Push data tersebut ke Stack. 86
7. Dianggap tempat yang tersedia mesih lebih dari 10 tempat. Tulis program (penggalan program) untuk menginput sebanyak 10 buah data melalui keyboard satu persatu dan mem Push data tersebut ke Stack. 0 1 2 3 4 5 6 n-1 X X Top 3 Top X 87
8. Dipastikan stack terisi lebih dari 10 elemen. Tulis program (penggalan program) untuk mengeluarkan (POP) isi stack sebanyak 10 elemen, satu per satu dan mencetaknya ke layar. 88
8. Dipastikan stack terisi lebih dari 10 elemen. Tulis program (penggalan program) untuk mengeluarkan (POP) isi stack sebanyak 10 elemen, satu per satu dan mencetaknya ke layar. 89
8. Dipastikan stack terisi lebih dari 10 elemen. Tulis program (penggalan program) untuk mengeluarkan (POP) isi stack sebanyak 10 elemen, satu per satu dan mencetaknya ke layar. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1 X X X X Top 14 Top X 90
9. Tulis program (penggalan program) untuk menginput melalui keyboard satu persatu dan mem Push data tersebut ke Stack. Bila tempat yang tersedia masih cukup untuk menampung 10 data baru, maka data yang diinput dan di push sebanyak 10 buah data. Tapi bila tempat yang tersedia kurang dari 10 tempat, maka cukup menginput dan mem Push sebanyak tempat yang tersedia, sampai stack penuh. 10. Tulis program (penggalan program) untuk mengeluarkan (POP) isi stack satu persatu dan mencetaknya ke layar. Bila stack berisi 10 elemen atau lebih dari 10 elemen, maka keluarkan dan cetak sebanyak 10 elemen. Tapi bila isi stack kurang dari 10 elemen, maka keluarkan semua isi stack, sampai stack menjadi kosong. 91
9. Tulis program (penggalan program) untuk menginput melalui keyboard satu persatu dan mem Push data tersebut ke Stack. Bila tempat yang tersedia masih cukup untuk menampung 10 data baru, maka data yang diinput dan di push sebanyak 10 buah data. Tapi bila tempat yang tersedia kurang dari 10 tempat, maka cukup menginput dan mem Push sebanyak tempat yang tersedia, sampai stack penuh. 92
9. Tulis program (penggalan program) untuk menginput melalui keyboard satu persatu dan mem Push data tersebut ke Stack. Bila tempat yang tersedia masih cukup untuk menampung 10 data baru, maka data yang diinput dan di push sebanyak 10 buah data. Tapi bila tempat yang tersedia kurang dari 10 tempat, maka cukup menginput dan mem Push sebanyak tempat yang tersedia, sampai stack penuh. 93
9. Tulis program (penggalan program) untuk menginput melalui keyboard satu persatu dan mem Push data tersebut ke Stack. Bila tempat yang tersedia masih cukup untuk menampung 10 data baru, maka data yang diinput dan di push sebanyak 10 buah data. Tapi bila tempat yang tersedia kurang dari 10 tempat, maka cukup menginput dan mem Push sebanyak tempat yang tersedia, sampai stack penuh. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1 X X X X Top 14 Top X 94
9. Tulis program (penggalan program) untuk menginput melalui keyboard satu persatu dan mem Push data tersebut ke Stack. Bila tempat yang tersedia masih cukup untuk menampung 10 data baru, maka data yang diinput dan di push sebanyak 10 buah data. Tapi bila tempat yang tersedia kurang dari 10 tempat, maka cukup menginput dan mem Push sebanyak tempat yang tersedia, sampai stack penuh. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1 X X X X Top 7 Top X 95
10. Tulis program (penggalan program) untuk mengeluarkan (POP) isi stack satu persatu dan mencetaknya ke layar. Bila stack berisi 10 elemen atau lebih dari 10 elemen, maka keluarkan dan cetak sebanyak 10 elemen. Tapi bila isi stack kurang dari 10 elemen, maka keluarkan semua isi stack, sampai stack menjadi kosong. 96
10. Tulis program (penggalan program) untuk mengeluarkan (POP) isi stack satu persatu dan mencetaknya ke layar. Bila stack berisi 10 elemen atau lebih dari 10 elemen, maka keluarkan dan cetak sebanyak 10 elemen. Tapi bila isi stack kurang dari 10 elemen, maka keluarkan semua isi stack, sampai stack menjadi kosong. 97
10. Tulis program (penggalan program) untuk mengeluarkan (POP) isi stack satu persatu dan mencetaknya ke layar. Bila stack berisi 10 elemen atau lebih dari 10 elemen, maka keluarkan dan cetak sebanyak 10 elemen. Tapi bila isi stack kurang dari 10 elemen, maka keluarkan semua isi stack, sampai stack menjadi kosong. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1 X X X X Top 7 Top X 98
10. Tulis program (penggalan program) untuk mengeluarkan (POP) isi stack satu persatu dan mencetaknya ke layar. Bila stack berisi 10 elemen atau lebih dari 10 elemen, maka keluarkan dan cetak sebanyak 10 elemen. Tapi bila isi stack kurang dari 10 elemen, maka keluarkan semua isi stack, sampai stack menjadi kosong. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1 X X X X Top 14 Top X 99
100
1 Sudah ada sebuah stack yang dibuat dengan int S[n], dengan variabel Top bertipe int sebagai penunjuk posisi stack yang ‘paling atas’. Tidak diketahui apakah stack tersebut dalam keadaan kosong, penuh, bisa diisi, atau ada isinya. Tulis program (penggalan program) untuk menginput data melalui keyboard satu persatu dan mem Push data tersebut ke Stack (bila stack tersebut bisa diisi) sampai Stack penuh tak bisa diisi lagi. 101
2 Sudah ada sebuah stack yang dibuat dengan int S[n], dengan variabel Top bertipe int sebagai penunjuk posisi stack yang ‘paling atas’. Tidak diketahui apakah stack tersebut dalam keadaan kosong, penuh, bisa diisi, atau ada isinya. Tulis program (penggalan program) untuk mengeluarkan isi stack tersebut (bila ada isinya), dan mencetaknya ke layar monitor, satu persatu sampai stack tersebut kosong. 102
3 Sudah ada dua buah stack S 1, dan S 2, yang dibuat dengan int S 1[n] dan S 2[n]. Stack S 1 sudah ada isinya, dan stack S 2, belum ada isinya, yang diilustrasikan dengan gambar disebelah kanan ini. Susun program (penggalan program) untuk mengeluarkan isi stack S 1, dan memindahkan isinya ke stack S 2, sehingga stack S 1 menjadi kosong, dengan ilustrasi seperti gambar disebelah kanan ini. Top 1 7 6 17 5 5 4 33 7 6 5 4 25 12 15 27 3 2 1 0 -1 S 1 7 6 5 4 Top 1 3 2 1 0 -1 Top 2 S 1 S 2 7 6 27 5 15 4 12 3 25 2 33 1 5 0 17 -1 S 2 103
4 Sudah ada tiga buah stack S 1, S 2 dan S 3, yang dibuat dengan int S 1[n], S 2[n] dan S 3[n]. Stack S 1 sudah ada isinya, dan stack S 2 dan S 3, belum ada isinya, yang diilustrasikan dengan gambar disebelah kanan ini. Susun program (penggalan program) untuk mengeluarkan isi stack S 1, dan memindahkan isinya ke stack S 2, sehingga stack S 1 menjadi kosong, dengan ilustrasi seperti gambar disebelah kanan ini. Stack S 3 dapat digunakan bilamana diperlukan Top 1 7 6 17 5 5 4 33 7 6 5 4 25 12 15 27 3 2 1 0 -1 S 1 7 6 5 4 Top 1 3 2 1 0 -1 Top 2 S 1 S 2 Top 3 7 6 17 5 5 4 33 7 6 5 4 25 12 15 27 3 2 1 0 -1 S 2 Top 3 104 S 3
5 Sudah ada tiga buah stack S 1, S 2 dan S 3, yang dibuat dengan int S 1[n], S 2[n] dan S 3[n]. Stack S 1 sudah ada isinya, dan stack S 2 dan S 3, belum ada isinya, yang diilustrasikan dengan gambar disebelah kanan ini. Susun program (penggalan program) untuk mengeluarkan isi stack S 1, dan memindahkan isinya ke stack S 2, sehingga stack S 1 menjadi kosong, dan isi stack S 2 urut menaik dengan ilustrasi seperti gambar disebelah kanan ini. Stack S 3 dapat digunakan bilamana diperlukan Top 1 7 6 17 5 5 4 33 7 6 5 4 25 12 15 27 3 2 1 0 -1 S 1 7 6 5 4 Top 1 3 2 1 0 -1 Top 2 S 1 S 2 Top 3 7 6 33 5 27 4 25 7 6 5 4 3 17 2 15 1 12 0 5 -1 3 2 1 0 -1 S 2 Top 3 105 S 3
- Slides: 105