Double STACK 6.3 & 7.3 NESTED LOOP
double STACK
1. 02 double Stack
2. Double Stack S1[ ] S2[ ] 1. 24 25 12 17 10 -1 3 dasar1 Top1 dasar1 0 1 2 3 4 5 6 7 8 9 S1[ ] 25 12 17 10 -1 3 dasar1 Top1 dasar1 Top1 0 1 2 3 4 5 6 7 8 9 S2[ ] 42 11 26 35 24 -1 4 dasar2 Top2 dasar2 Top2 n-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 25 12 17 10 42 11 26 35 24 dasar1 dasar2 Top2 Top1 -1 3 9 14 dasar1 Top1 dasar2 Top2
2. Double Stack S2 S1 S1[ ] S2[ ] 1. 24 25 12 17 10 -1 3 dasar1 Top1 0 1 2 3 4 5 6 7 8 9 S1[ ] 25 12 17 10 -1 3 dasar1 Top1 dasar1 Top1 0 1 2 3 4 5 6 7 8 9 S2[ ] 42 11 26 35 27 -1 4 dasar2 Top2 dasar2 Top2 S2 S1 n-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 25 12 17 10 27 35 26 11 42 S[ ] dasar2 dasar1 Top2 Top1 3 20 15 dasar1 Top1 dasar2 Top2
Ilustrasi selanjutnya 1. 24 n-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 25 12 17 10 27 35 26 11 42 S[ ] dasar2 dasar1 Top2 Top1 n-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 a a a a b b b b b S[ ] dasar2 dasar1 Top2 Top1 Ilustrasi selanjutnya S1 S2 n-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 X X X X X X X X X S[ ] dasar2 dasar1 Top2 Top1
2. Double Stack 1. 24 2.1 Representasi dua buah stack menggunakan array yang sama 2.1.1 Ilustrasi dua stack menggunakan satu array S2 S1 n-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 X X X X X X X X X S[ ] Top2 Top1 3 15 Top1 Top2 2.1.2 Prinsip proses : LIFO (Last In First Out) baik untuk Stack1 maupun untuk Stack2. 2.1.3 Proses. a. AWAL (Inisialisasi) b. PUSH1, Push untuk Stack1 c. POP1, Pop untuk Stack1. d. PUSH2, Push untuk Stack2 e. POP2, Pop untuk Stack2
a. S2 S1 Algoritma dasar untuk proses AWAL (Inisialisasi), 1. 24 a. Algoritma dasar untuk proses AWAL (Inisialisasi), ditulis dalam bahasa C. void AWAL(void) { Top1 = -1; Top2 = n; } S2 S1 n-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 S[ ] Top2 Top1
b. Algoritma dasar untuk c. Algoritma dasar untuk 1. 25 S2 S1 n-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 X X X X X X X X X S[ ] Top2 Top1 b. Algoritma dasar untuk proses PUSH1 (mengisi Stack1) c. Algoritma dasar untuk proses POP1 (mengambil isi Stack1) void PUSH1(void) { Top1 = Top1 + 1; S[Top1] = X; } void POP(void) { X = S[Top1]; Top1 = Top1 - 1; }
S2 S1 d. e. Algoritma dasar untuk proses PUSH2 (mengisi Stack2) 1. 25 S2 S1 n-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 X X X X X X X X X S[ ] Top2 Top1 d. Algoritma dasar untuk proses PUSH2 (mengisi Stack2) Algoritma dasar untuk proses POP2 (mengambil isi Stack2) e. void PUSH1(void) { Top2 = Top2 - 1; S[Top2] = X; } void POP(void) { X = S[Top2]; Top2 = Top2 + 1; }
1. 26 2.1.4 Kondisi Stack.
2.1.4 Kondisi Stack. S2 S1 1. 26 X X X X X X X X X S[ ] Top2 Top1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 X X X X X X X X X S[ ] Top2 Top1 KOSONG a1. Stack1 Kosong a2. Stack2 Kosong PENUH. Baik Stack1 maupun Stack2 tak bisa diisi BISA DIISI c1. Stack1 Bisa Diisi c2. Stack2 Bisa Diisi ADA ISINYA d1. Stack1 Ada Isinya d2. Stack2 Ada Isinya
2.1.4 Kondisi Stack. 1. 26 Kondisi Stack c i r i Ilustrasi gambar a. e. f. Stack1 KOSONG Stack2 KOSONG Stack PENUH baik Stack1 maupun Stack2 tidak BISA DIISI Stack BISA DIISI bisa diisi Stack1 ADA ISINYA Stack2 ADA ISINYA a. b. c. d. e. f. Top1 = -1 Top2 = n Top2 - Top1 = 1 Top2 - Top1 > 1 Top1 > -1 Top2 < n 1 7 1 2 6 5 6 7 1 2 3 4 2 3 4 5 6 3 4 5 7
1. 26 a b Gambar: Stack 1 KOSONG Gambar no : ? 1 2 3 4 5 6 7 T1 T2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Gambar: Stack 1 KOSONG Gambar no : ?
1. 26 a b Gambar: Stack 1 KOSONG Gambar no : ? 1 2 3 4 5 6 7 T1 T2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Gambar: Stack 1 KOSONG Gambar no : ?
1. 26 a b Gambar: Stack 1 KOSONG Gambar no : 1 7 1 2 3 4 5 6 7 T1 T2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Gambar: Stack 1 KOSONG Gambar no : 1 7
1. 26 a b Gambar: Stack 2 KOSONG Gambar no : ? 1 2 3 4 5 6 7 T1 T2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Gambar: Stack 2 KOSONG Gambar no : ?
1. 26 a b Gambar: Stack 2 KOSONG Gambar no : 1 2 6 1 2 3 4 5 6 7 T1 T2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Gambar: Stack 2 KOSONG Gambar no : 1 2 6
1. 26 a b Gambar: Stack PENUH baik Stack 1 maupuan Stack2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Gambar: Stack PENUH baik Stack 1 maupuan Stack2 Tidak BISA DIISI Gambar no : ?
1. 26 a b Gambar: Stack PENUH baik Stack 1 maupuan Stack2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Gambar: Stack PENUH baik Stack 1 maupuan Stack2 Tidak BISA DIISI Gambar no : 5 6 7
1. 26 a b Gambar: Stack1 ADA ISINYA Gambar no : ? 1 2 3 4 5 6 7 T1 T2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Gambar: Stack1 ADA ISINYA Gambar no : ?
1. 26 a b Gambar: Stack1 ADA ISINYA Gambar no : 2 3 4 5 6 1 2 3 4 5 6 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Gambar: Stack1 ADA ISINYA Gambar no : 2 3 4 5 6
1. 26 a b Stack2 ADA ISINYA Gambar no : ? 1 2 3 4 5 6 7 T1 T2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Stack2 ADA ISINYA Gambar no : ?
1. 26 a b Stack2 ADA ISINYA Gambar no : 3 4 5 7 1 2 3 4 5 6 7 T1 T2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Stack2 ADA ISINYA Gambar no : 3 4 5 7
1. 26 a b Stack1 atau Stack2 BISA DIISI Gambar no : ? 1 2 3 4 5 6 7 T1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Stack1 atau Stack2 BISA DIISI Gambar no : ?
1. 26 a b Stack1 atau Stack2 BISA DIISI Gambar no : 1 2 3 4 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 a b 2 3 4 5 T2 6 7 Stack1 atau Stack2 BISA DIISI Gambar no : 1 2 3 4
2.1.4 Kondisi Stack. 1. 26 Kondisi Stack c i r i Ilustrasi gambar a. e. f. Stack1 KOSONG Stack2 KOSONG Stack PENUH baik Stack1 maupun Stack2 tidak BISA DIISI Stack BISA DIISI bisa diisi Stack1 ADA ISINYA Stack2 ADA ISINYA a. b. c. d. e. f. Top1 = -1 Top2 = n Top2 - Top1 = 1 Top2 - Top1 > 1 Top1 > -1 Top2 < n 1 7 1 2 6 5 6 7 1 2 3 4 2 3 4 5 6 3 4 5 7
2.1.5 Algoritma PUSH dan POP yang lengkap. 1. 28 2.1.5 Algoritma PUSH dan POP yang lengkap. a. b. c. d. PUSH1 POP1 PUSH2 POP2 a. Algoritma yang lengkap untuk proses PUSH1 (mengisi Stack1) void PUSH1(void) { if ( Top2 - Top1 > 1 ) Top1 = Top1 + 1; S[Top1] = X; } else printf( “Stack Penuh”);
2.1.5 Algoritma PUSH dan POP yang lengkap. 1. 28 2.1.5 Algoritma PUSH dan POP yang lengkap. Atau Algoritma yang lengkap untuk proses PUSH1 dengan ‘logika terbalik’ void PUSH1(void) { if (Top2 - Top1 == 1 ) printf(“Stack Penuh’); else Top1 = Top1 + 1; S[Top1] = X; }
b. Algoritma yang lengkap untuk proses POP1 (mengambil isi Stack1) void POP1(void) { if ( Top1 > -1 ) { X = S[Top1]; Top1 = Top1 - 1; } else printf( “Stack1 Kosong”); Atau Algoritma yang lengkap untuk proses POP1 dengan ‘logika terbalik’ void POP1(void) { if( Top1 == -1 ) printf(“Stack1 Kosong”); else { X = S[Top1]; Top1 = Top1 - 1; }
c. Algoritma yang lengkap untuk proses PUSH2 (mengisi Stack2) 1.01 c. Algoritma yang lengkap untuk proses PUSH2 (mengisi Stack2) 1. 30 void PUSH2(void) { if ( Top2 - Top1 > 1 ) { Top2 = Top2 - 1; S[Top2] = X; } else printf( “Stack Penuh”); Atau Algoritma yang lengkap untuk proses PUSH2 dengan ‘logika terbalik’ void PUSH2(void) { if (Top2 - Top1 == 1 ) printf(“Stack Penuh’); else { Top2 = Top2 - 1; S[Top2] = X; }
Algoritma yang lengkap untuk proses POP2 (mengambil isi Stack2) d. Algoritma yang lengkap untuk proses POP2 (mengambil isi Stack2) 1. 31 void POP2(void) { if ( Top2 < n ) { X = S[Top2]; Top2 = Top2 + 1; } else printf( “Stack2 Kosong”); Atau Algoritma yang lengkap untuk proses POP2dengan ‘logika terbalik’ void POP2(void) { if( Top1 == n ) printf(“Stack1 Kosong”); else { X = S[Top1]; Top1 = Top1 - 1; }
2.2 Soal soal Latihan Mandiri 1. 32 2.2 Soal soal Latihan Mandiri 0 1 2 3 4 5 6 7 8 n-1 n X X X X Y Y Y Y Y Y Top1 Top2 1. Sebutkan ciri bahwa : a. b. c. d. e. f. g. h. i. Stack1 kosong Stack2 kosong Penuh. Baik Stack1 maupun Stack2 tak bisa diisi lagi. Baik Stack1 maupun Stack2 bisa diisi. Stack1 ada isinya. Stack2 ada isinya Baik Stack1 maupun Stack2 tak ada isinya Hanya tersedia 10 tempat lagi yang masih bisa diisi Stack1 ditambah Stack2 baru menggunakan 10 tempat (elemen).
2. Tulis algoritma dasar untuk: 1. 32 2. Tulis algoritma dasar untuk: a. Mengisi Stack1 (PUSH1) b. Mengisi Stack2 (PUSH2) c. Menghapus isi Stack1 (POP1) d. Menghapus isi Stack2(POP2) 3. Tulis algoritma yang lengkap untuk: a. Mengisi Stack1 (PUSH1) b. Mengisi Stack2 (PUSH2) c. Menghapus isi Stack1 (POP1) d. Menghapus isi Stack2(POP2) 4. Tulis algoritma yang lengkap untuk mengisi Stack1 sampai Stack penuh tak bisa diisi lagi. 5. Tulis algoritma yang lengkap untuk mengisi Stack2 sampai Stack penuh tak bisa diisi lagi. 6. Tulis algoritma yang lengkap untuk menghapus isi Stack1 sampai Stack1 isinya kosong. 7. Tulis algoritma yang lengkap untuk menghapus isi Stack2 sampai Stack2 isinya kosong.