Algorithm and Data Structures.

Slides:



Advertisements
Presentasi serupa
STRUKTUR DATA (7) single linked list circular
Advertisements

STRUKTUR DATA array stack dan queue
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
Linked List BEBERAPA CONTOH SOAL 6.3 & 7.3 NESTED LOOP.
STACK Budi arifitama.
Linked List Pembuatan Simpul Awal.
Pertemuan 5 STACK atau TUMPUKAN IMAM SIBRO MALISI NIM :
STACK (TUMPUKAN).
Algoritma dan Struktur Data
STACK (Tumpukan).
STRUKTUR DATA version STMIK AMIKOM YOGYAKARTA
STACK.
STACK.
Struktur Data (Data Structure) – IS 2313
Pointer dalam Stack.
QUEUE (antrian).
STRUKTUR DATA (4) Array Stack(Tumpukkan) dan Queue (Antrian)
Soal-Soal Latihan Mandiri
Struktur data Stack Bab 2 Buku :.
BAB2 QUEUE 6.3 & 7.3 NESTED LOOP.
Penelusuran Bab 7 Pohon Biner 219.
Linked List DELETE 6.3 & 7.3 NESTED LOOP.
LINKED LIST by Yohana N.
Double Ended QUEUE (DeQue) 6.3 & 7.3 NESTED LOOP.
Linear Data Structures (Stack)
stack ==tumpukan== Tenia wahyuningrum st3 telkom purwokerto
STRUKTUR DATA (4) array stack dan queue
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
Pertemuan 7 stack jual [Valdo] Lunatik Chubby Stylus.
STACK.
Pertemuan 8 Stack dengan Array
Stack Pertemuan 11.
Bocoran Soal 6.3 & 7.3 NESTED LOOP UTS.
Universitas Budi Luhur
Chapt 04 : Stack Oleh : Yuli Praptomo PHS, S.Kom
Stack.
BAB3 QUEUE 6.3 & 7.3 NESTED LOOP.
Sapta Candra Miarsa,S.T.,M.T.
Defri Kurniawan ADT STACK Defri Kurniawan
STRUKTUR DATA STACK.
STRUKTUR DATA QUIZ.
Stack Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman Bersifat LIFO (Last In First Out) Benda yang terakhir masuk ke dalam.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
STACK Denny Agustiawan,M.pd
STACK 6.3 & 7.3 NESTED LOOP.
STACK (Tumpukan).
Stack (Tumpukan) Sumber Kepustakaan : putuputraastawa.files.wordpress.com/.../pert_5_sta...
Linked List DELETE 6.3 & 7.3 NESTED LOOP.
STRUKTUR DATA STACK.
Circular QUEUE 6.3 & 7.3 NESTED LOOP.
STACK (Tumpukan).
STACK / TUMPUKAN Struktur Data.
Stack.
STACK Yohana Nugraheni.
Algoritma dan Struktur Data
Algoritme dan Stuktur Data
Linked List 6.3 & 7.3 NESTED LOOP.
Stack.
STRUKTUR DATA version STMIK AMIKOM YOGYAKARTA
STACK (TUMPUKAN) Stack atau tumpukan didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan dan pengambilan elemen melalui.
STRUKTUR DATA PERTEMUAN 4
STRUKTUR DATA Stack atau Tumpukan.
Linear Doubly INSERT KIRI
Double STACK 6.3 & 7.3 NESTED LOOP.
Linear Doubly Linked List
STACK (Tumpukan) Tumpukan Koin.
STRUKTUR DATA – TEKNIK INFORMATIKA S1
QUEUE (Antrian).
Struktur Data Linear Created by Fifth Group, S3B TI Anggota
Defri Kurniawan ADT STACK Defri Kurniawan
Transcript presentasi:

Algorithm and Data Structures

Stack Queue Tree Graph Peng-alokasi-an memory struktur Satu dimensi linear Array (statis) Queue Dua dimensi Graph Tree Stack Queue non linear Linear Linked- List Graph (dinamis) Non Linear Tree Graph

STACK 6.3 & 7.3 NESTED LOOP

STACK ( TUMPUKAN )

1.01 BAB 1 STACK 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. 7 6 5 4 3 2 1 ( Yedidyah L, Moshe J. A., and Aaron M. Tenenbaum; Data Structures Using C and C++)

1. Single Stack. Stack Tunggal, satu stack dalam satu collection 1.01 1. Single Stack. Stack Tunggal, satu stack dalam satu collection 1.1 Ilustrasi Single Stack. Nomor Urut Masuk (PUSH) Nomor Urut Keluar (POP) 1 2 3 4 Top Buku-4 4 3 2 1 Buku-3 Buku-2 Buku-1 Meja

Prinsip atau Konsep prosesnya disebut : L I F O ( Last In First Out ) 1.01 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 )

1.2 Representasi Single Stack menggunakan Array Satu Dimensi. 1.2.1 Ilustrasi Single Stack menggunakan Array Satu Dimensi misal n = 10 n-1 0 1 2 3 4 5 6 7 8 9 25 12 17 10 S[ ] misal dibuat dengan : Top #define n 10 - int S[n]; int Top, X; 3 Top X

Pertanyaan : dalam keadaan seperti sekarang 0 1 2 3 4 5 6 7 8 9 PUSH 25 12 17 10 S[ ] 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 : ?

Pertanyaan : dalam keadaan seperti sekarang 0 1 2 3 4 5 6 7 8 9 PUSH 25 12 17 10 S[ ] 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 : ?

Diilustrasikan sebagai berikut : Ilustrasi Stack. 0 1 2 3 4 5 6 7 8 9 n-1 25 12 17 10 S[ ] Top 3 Top X Diilustrasikan sebagai berikut : 0 1 2 3 4 5 6 7 8 9 n-1 X X X X S[ ] Top

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)

a) Proses AWAL Catatan : void AWAL(void) { Top = -1; } n-1 S[ ] -1 Top Untuk memudahkan pembuatan program, maka array untuk Stack dan beberapa variabel yang terkait dibuat bersifat Glabal 0 1 2 3 4 5 6 7 8 9 n-1 S[ ] -1 Top Top X

Algoritma dasar untuk PUSH

Pertanyaan : dalam keadaan seperti sekarang 0 1 2 3 4 5 6 7 8 9 n-1 25 12 17 10 S[ ] 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 : ?

Pertanyaan : dalam keadaan seperti sekarang 0 1 2 3 4 5 6 7 8 9 n-1 25 12 17 10 S[ ] 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

? Pilih algoritma yang benar untuk PUSH a. Top = Top + 1; S[Top] = X; 3 15 25 12 17 10 S[ ] 4 0 1 2 3 4 5 6 7 8 9 n-1 Setelah nilai X diPUSH Ke Stack Sebelum nilai X diPUSH a. Top = Top + 1; S[Top] = X; b. S[Top] = X; Top = Top + 1; c. Top = Top + 1; X = S[Top]; d. X = S[Top]; Top = Top + 1; ?

? ? A = B; A = B; 25 17 A B A B Yang diisi, variabel A atau variabel B Sebelum : A B A = B; ? Sesudah : A B

A = B; A = B; 25 17 A B 17 17 A B Yang diisi adalah : variabel A Sebelum : A B A = B; 17 17 Sesudah : A B

? A a. A[3] = X; X = A[3]; b. Untuk mengisi elemen A[3] Pilih instruksi yang benar : 1 2 3 4 5 A 17 a. A[3] = X; b. X = A[3]; 17 X ?

? Pilih algoritma yang benar untuk PUSH a. Top = Top + 1; S[Top] = X; 3 15 25 12 17 10 S[ ] 4 0 1 2 3 4 5 6 7 8 9 n-1 Setelah nilai X diPUSH Ke Stack Sebelum nilai X diPUSH a. Top = Top + 1; S[Top] = X; b. S[Top] = X; Top = Top + 1; c. Top = Top + 1; X = S[Top]; d. X = S[Top]; Top = Top + 1; ?

Pilih algoritma yang benar untuk PUSH Top X 3 15 25 12 17 10 S[ ] 4 0 1 2 3 4 5 6 7 8 9 n-1 Setelah nilai X diPUSH Ke Stack Sebelum nilai X diPUSH a. Top = Top + 1; S[Top] = X; b. S[Top] = X; Top = Top + 1; c. Top = Top + 1; X = S[Top]; d. X = S[Top]; Top = Top + 1;

Top = Top + 1; S[Top] = X; Untuk PUSH Algoritma yang benar Top X 3 15 25 12 17 10 S[ ] 4 0 1 2 3 4 5 6 7 8 9 n-1 Setelah nilai X diPUSH Ke Stack Sebelum nilai X diPUSH Untuk PUSH Algoritma yang benar Top = Top + 1; S[Top] = X;

Top = Top + 1; S[Top] = X; Algoritma PUSH yang benar : Sebelum : 0 1 2 3 4 5 6 7 8 9 n-1 25 12 17 10 3 15 S[ ] Top X Top 0 1 2 3 4 5 6 7 8 9 n-1 Dengan : Top = Top + 1; 25 12 17 10 4 15 S[ ] Top X Top Sesudah : 0 1 2 3 4 5 6 7 8 9 n-1 Dengan : S[Top] = X; 25 12 17 10 15 4 15 S[ ] Top X Top

S[Top] = X; Top = Top + 1; Algoritma PUSH yang SALAH : Sebelum : 0 1 2 3 4 5 6 7 8 9 n-1 25 12 17 10 3 15 S[ ] Top X Top 0 1 2 3 4 5 6 7 8 9 n-1 Dengan : S[Top] = X; 25 12 17 15 3 15 S[ ] Top X Top Sesudah : 0 1 2 3 4 5 6 7 8 9 n-1 Dengan : Top = Top + 1; 25 12 17 15 4 15 S[ ] Top X Top

Algoritma dasar untuk PUSH Top = Top + 1; S[Top] = X; atau : Top+= 1; S[Top] = X; Top++; S[Top] = X; atau : S[++Top] = X; atau :

Algoritma dasar untuk POP

Pertanyaan : dalam keadaan seperti sekarang 0 1 2 3 4 5 6 7 8 9 n-1 25 12 17 10 S[ ] 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 : ?

Pertanyaan : dalam keadaan seperti sekarang 0 1 2 3 4 5 6 7 8 9 n-1 25 12 17 10 S[ ] 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

? Untuk POP, Pilih algoritma yang benar a. X = S[Top]; Top = Top - 1; 3 25 12 17 10 S[ ] 2 0 1 2 3 4 5 6 7 8 9 n-1 Setelah POP Sebelum POP 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; ?

Pilih algoritma yang benar Untuk POP, Pilih algoritma yang benar Top X 3 25 12 17 10 S[ ] 2 0 1 2 3 4 5 6 7 8 9 n-1 Setelah POP Sebelum POP 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;

S[Top] = X; Top = Top - 1; Untuk POP Algoritma yang benar Top X 3 25 12 17 10 S[ ] 2 0 1 2 3 4 5 6 7 8 9 n-1 Setelah POP Sebelum POP Untuk POP Algoritma yang benar S[Top] = X; Top = Top - 1;

Setelah Top dipindahkan menunjuk S[2] apakah nilai 10 X 3 25 12 17 10 S[ ] 0 1 2 3 4 5 6 7 8 9 n-1 Sebelum POP Pertanyaan : Setelah 10 disimpan di X apakah nilai 10 masih ada dalam S[3] ? Jawab : 3 10 Top 25 12 17 S[ ] 0 1 2 3 4 5 6 7 8 9 n-1 Isi X Pertanyaan : Setelah Top dipindahkan menunjuk S[2] apakah nilai 10 masih ada dalam S[3] ? X Top X 2 10 25 12 17 S[ ] 0 1 2 3 4 5 6 7 8 9 n-1 Setelah POP Jawab :

Setelah Top dipindahkan menunjuk S[2] apakah nilai 10 X 3 25 12 17 10 S[ ] 0 1 2 3 4 5 6 7 8 9 n-1 Sebelum POP Pertanyaan : Setelah 10 disimpan di X apakah nilai 10 masih ada dalam S[3] ? Jawab : masih ada 3 10 Top 25 12 17 S[ ] 0 1 2 3 4 5 6 7 8 9 n-1 Isi X Pertanyaan : Setelah Top dipindahkan menunjuk S[2] apakah nilai 10 masih ada dalam S[3] ? X Top X 2 10 25 12 17 S[ ] 0 1 2 3 4 5 6 7 8 9 n-1 Setelah POP Jawab : masih ada tapi untuk keperluan ilustrasi, nilainya dihapus

Kita Ulangi X = S[Top]; Top = Top - 1; Algoritma POP yang benar : n-1 0 1 2 3 4 5 6 7 8 9 n-1 Sebelum POP 25 12 17 10 3 S[ ] Top X Top Kita Ulangi

X = S[Top]; Top = Top - 1; Algoritma POP yang benar : 0 1 2 3 4 5 6 7 8 9 n-1 Sebelum POP 25 12 17 10 3 S[ ] Top X Top 0 1 2 3 4 5 6 7 8 9 n-1 Dengan : X=S[Top]; 25 12 17 10 S[ ] 3 10 Top X Top

X = S[Top]; Top = Top - 1; Algoritma POP yang benar : 0 1 2 3 4 5 6 7 8 9 n-1 Sebelum POP 25 12 17 10 3 S[ ] Top X Top 0 1 2 3 4 5 6 7 8 9 n-1 Dengan : X=S[Top]; 25 12 17 10 S[ ] 3 10 Top X Top 0 1 2 3 4 5 6 7 8 9 n-1 Dengan : Top = Top -1; 25 12 17 S[ ] 2 10 Top X Top

Algoritma dasar untuk POP X = S[Top]; Top = Top - 1; X = S[Top]; Top-=1; atau : X = S[Top]; Top--; atau : X = S[Top--]; atau :

Top = Top - 1; X = S[Top]; Algoritma POP yang SALAH : Sebelum POP 25 12 17 10 3 S[ ] Top X Top 0 1 2 3 4 5 6 7 8 9 n-1 Dengan : Top = Top -1; 25 12 17 10 S[ ] 3 Top X Top 0 1 2 3 4 5 6 7 8 9 n-1 Dengan : X = S[Top]; 25 12 10 S[ ] 2 17 Top X Top

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; }

Semua variabel bersifat GLOBAL #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

Diilustrasikan sebagai berikut : Ilustrasi Stack. Top X 3 25 12 17 10 S[ ] 0 1 2 3 4 5 6 7 8 9 n-1 Diilustrasikan sebagai berikut : Top X S[ ] 0 1 2 3 4 5 6 7 8 9 n-1

1.2.4 Kondisi Stack. a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA

Kondisi Stack. a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA lawannya

Kondisi Stack. Kondisi Stack : a. KOSONG 1 b. PENUH c. BISA DIISI Top X 0 1 2 3 4 5 6 7 8 9 n-1 1 2 3 a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA

Kondisi Stack. Kondis Stack : 1 a. KOSONG b. PENUH 2 c. BISA DIISI Top X 0 1 2 3 4 5 6 7 8 9 n-1 1 2 3 a. KOSONG Gambar : ? b. PENUH Gambar : ? c. BISA DIISI Gambar : ? d. ADA ISINYA Gambar : ?

Kondisi Stack. Kondis Stack : 1 a. KOSONG 1 b. PENUH 2 c. BISA DIISI Top X 0 1 2 3 4 5 6 7 8 9 n-1 1 2 3 a. KOSONG Gambar : 1 b. PENUH Gambar : ? c. BISA DIISI Gambar : ? d. ADA ISINYA Gambar : ?

Kondisi Stack. Kondis Stack : 1 a. KOSONG 1 b. PENUH 3 2 c. BISA DIISI Top X 0 1 2 3 4 5 6 7 8 9 n-1 1 2 3 a. KOSONG Gambar : 1 b. PENUH 3 Gambar : c. BISA DIISI Gambar : ? d. ADA ISINYA Gambar : ?

Kondisi Stack. Kondis Stack : 1 2 3 a. KOSONG 1 b. PENUH 3 Top X 0 1 2 3 4 5 6 7 8 9 n-1 1 2 3 a. KOSONG Gambar : 1 b. PENUH 3 Gambar : c. BISA DIISI Gambar : 1 2 d. ADA ISINYA Gambar : ?

Kondisi Stack. Kondis Stack : 1 2 3 a. KOSONG 1 b. PENUH 3 Top X 0 1 2 3 4 5 6 7 8 9 n-1 1 2 3 a. KOSONG Gambar : 1 b. PENUH 3 Gambar : c. BISA DIISI Gambar : 1 2 d. ADA ISINYA Gambar : 2 3

Kondisi Stack. Kondis Stack : cirinya 1 1 3 2 1 2 3 2 3 n-1 0 1 2 3 4 5 6 7 8 9 n-1 cirinya 1 a. KOSONG : ? 1 Top 0 1 2 3 4 5 6 7 8 9 n-1 b. PENUH : ? 3 2 X X X X c. BISA DIISI : ? Top 1 2 0 1 2 3 4 5 6 7 8 9 n-1 d. ADA ISINYA : ? 3 X X X X X X X X X X 2 3 Top

Kondisi Stack. Kondis Stack : cirinya 1 1 3 2 1 2 3 2 3 n-1 0 1 2 3 4 5 6 7 8 9 n-1 cirinya 1 a. KOSONG : Top = -1 1 Top 0 1 2 3 4 5 6 7 8 9 n-1 b. PENUH : ? 3 2 X X X X c. BISA DIISI : ? Top 1 2 0 1 2 3 4 5 6 7 8 9 n-1 d. ADA ISINYA : ? 3 X X X X X X X X X X 2 3 Top

Kondisi Stack. Kondis Stack : cirinya 1 1 3 2 1 2 3 2 3 n-1 0 1 2 3 4 5 6 7 8 9 n-1 cirinya 1 a. KOSONG : Top = -1 1 Top 0 1 2 3 4 5 6 7 8 9 n-1 b. PENUH : Top = n-1 3 2 X X X X c. BISA DIISI : ? Top 1 2 0 1 2 3 4 5 6 7 8 9 n-1 d. ADA ISINYA : ? 3 X X X X X X X X X X 2 3 Top

Kondisi Stack. Kondis Stack : cirinya 1 1 3 2 1 2 3 2 3 n-1 0 1 2 3 4 5 6 7 8 9 n-1 cirinya 1 a. KOSONG : Top = -1 1 Top 0 1 2 3 4 5 6 7 8 9 n-1 b. PENUH : Top = n-1 3 2 X X X X c. BISA DIISI : Top < n-1 Top 1 2 0 1 2 3 4 5 6 7 8 9 n-1 d. ADA ISINYA : ? 3 X X X X X X X X X X 2 3 Top

Kondisi Stack. Kondis Stack : cirinya 1 1 3 2 1 2 3 2 3 n-1 0 1 2 3 4 5 6 7 8 9 n-1 cirinya 1 a. KOSONG : Top = -1 1 Top 0 1 2 3 4 5 6 7 8 9 n-1 b. PENUH : Top = n-1 3 2 X X X X c. BISA DIISI : Top < n-1 Top 1 2 0 1 2 3 4 5 6 7 8 9 n-1 d. ADA ISINYA : Top > -1 3 X X X X X X X X X X 2 3 Top

Kondisi Stack. Kondis Stack : cirinya a. KOSONG Top = -1 b. PENUH 0 1 2 3 4 5 6 7 8 9 n-1 Top X Kondis Stack : cirinya a. KOSONG Top = -1 b. PENUH Top = n-1 c. BISA DIISI Top < n-1 d. ADA ISINYA Top > -1

1.2.4 Kondisi Stack. 1 2 3 Kondisi Stack c i r i n-1 n-1 Top X X X X (posisi Top) Ilustrasi gambar a. b. c. d. KOSONG tak ada isinya PENUH tak bisa diisi lagi BISA DIISI (kebalikan dari PENUH) ADA ISINYA (kebalikan dari KOSONG) Top = -1 Top = n-1 Top < n-1 Top > -1 Gambar 1 Gambar 3 Gambar 1 dan 2 Gambar 2 dan 3 0 1 2 3 4 5 6 7 8 9 n-1 1 0 1 2 3 4 5 6 7 8 9 n-1 Top 2 X X X X Top 0 1 2 3 4 5 6 7 8 9 n-1 3 X X X X X X X X X X Top

Algoritma PUSH dan POP yang lengkap. 1.2.5 Algoritma PUSH dan POP yang lengkap.

a. Algoritma yang lengkap untuk proses PUSH 0 1 2 3 4 5 6 7 8 9 n-1 Bila ada instruksi PUSH maka akan d isi di elemen nomor : ? X X X X Top

a. Algoritma yang lengkap untuk proses PUSH 0 1 2 3 4 5 6 7 8 9 n-1 Bila ada instruksi PUSH maka akan d isi di elemen nomor : ? X X X X Top 0 1 2 3 4 5 6 7 8 9 n-1 Bila ada instruksi PUSH maka akan d isi di elemen nomor : 4 X X X X Top

a. Algoritma yang lengkap untuk proses PUSH 0 1 2 3 4 5 6 7 8 9 n-1 Bila ada instruksi PUSH maka akan diisi di elemen nomor : 4 X X X X Top 0 1 2 3 4 5 6 7 8 9 n-1 Dalam kondisi PENUH Bolehkah melakukan PUSH ? X X X X X X X X X X Jawab : ? Top

a. Algoritma yang lengkap untuk proses PUSH 0 1 2 3 4 5 6 7 8 9 n-1 Bila ada instruksi PUSH maka akan d isi di elemen nomor : 4 X X X X Top 0 1 2 3 4 5 6 7 8 9 n-1 Dalam kondisi PENUH Bolehkah melakukan PUSH ? X X X X X X X X X X Top Jawab : TIDAK BOLEH

? a. Algoritma yang lengkap untuk proses PUSH Ilustrasi Stack n-1 X X 0 1 2 3 4 5 6 7 8 9 n-1 X X 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 ?

a. Algoritma yang lengkap untuk proses PUSH Ilustrasi Stack 0 1 2 3 4 5 6 7 8 9 n-1 X X X X Top silahkan PUSH sebaliknya (else) Bila BISA DIISI jangan PUSH Bila PENUH jangan PUSH sebaliknya (else) silahkan PUSH

a. Algoritma yang lengkap untuk proses PUSH void PUSH(void) { if ( BISA DIISI ) { Top = Top + 1; S[Top] = X; } else printf( “Stack Penuh”);

a. Algoritma yang lengkap untuk proses PUSH void PUSH(void) { if ( Top < n-1 ) { Top = Top + 1; S[Top] = X; } else printf( “Stack Penuh”); Bila BISA DIISI lakukan PUSH atau void PUSH(void) { if ( Top == n-1 ) printf( “Stack Penuh”); else { Top = Top + 1; S[Top] = X; } Bila PENUH jangan PUSH else lakukan PUSH

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

1.2.6 Contoh Soal PUSH dan POP . Baca sendiri di diktat

1.3 Aplikasi Stack. 1.3.1. Memeriksa kelengkapan pasangan kurung buka dan kurung tutup suatu arithmetic statement A + B * ( C - D) / ( E + F ) BENAR A + B * ( C - D / ( E + F ) SALAH Merobah (konversi) bentuk INFIX menjadi bentuk POSTFIX 1.3.2. 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.

1.4 Pointer sebagai penunjuk Stack. Menyiapkan Stack dan Pointer : n-1 0 1 2 3 4 5 6 7 8 9 10 Top BatasAtas Dasar define n 11 - int S[n], *Top, *BatasAtas, *Dasar Dasar = &S[-1]; Top = &S[-1]; BatasAtas = &S[n-1];

if(Top < BatasAtas) Top++; *Top = X; else printf(“Stack Penuh); 0 1 2 3 4 5 6 7 8 9 10 Top BatasAtas Dasar a. Algoritma untuk PUSH if(Top < BatasAtas) Top++; *Top = X; else printf(“Stack Penuh); b. Algoritma untuk POP if(Top > Dasar) X = *Top; Top--; else printf(“Stack Penuh);

1.5 Representasi Stack menggunakan structure. Perhatikan contoh berikut ini : a. Menyiapkan Stack. #define MAXSTACK 10 typedef char ItemType; typedef struct StackTag { int Top; ItemType S[MAXSTACK]; } StackType; tipe : char dibuat 10 elemen S[0] sampai dengan S[9] b. Initialisasi. void Intitialize(StackType *P ) { P->Top = -1; }

1.5 Representasi Stack menggunakan structure. Perhatikan contoh berikut ini : c. Proses PUSH. void PUSH(ItemType item, StackType *P) { if(P->Top >= MAXSTACK-1) printf(“Stack Penuh”); else P->entry[++P->Top] = item; d. Proses POP. void POP(ItemType *Q, StackType *P) { if(P->Top <= -1) printf(“Stack Kosong”); else *Q = P->S[P->Top--]; }

Soal-I. Untuk Stack yang diilustrasikan pada Gambar diatas : 1.6 Soal Latihan Mandiri. 0 1 2 3 4 5 6 n-1 X X X X Top Soal-I. Untuk Stack yang diilustrasikan pada Gambar diatas : 1. Sebutkan ciri bahwa Stack : a. Kosong b. Penuh c. Bisa diisi d. Ada isinya 2. Tulis algoritma dasar untuk: a. PUSH b. POP 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.

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. 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.

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.

SOAL LATIHAN DI KELAS

1 Sudah ada sebuah stack yang dibuat dengan int S[n], dengan variabel Top bertipe int sebagai penunjuk posisi isi 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.

2 Sudah ada sebuah stack yang dibuat dengan int S[n], dengan variabel Top bertipe int sebagai penunjuk posisi isi 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.

3 Sudah ada dua buah stack S1, dan S2, yang dibuat dengan int S1[n] dan S2[n]. Stack S1 sudah ada isinya, dan stack S2, belum ada isinya, yang diilustrasikan dengan gambar disebelah kanan ini. 7 7 Top1 6 17 6 5 5 5 4 33 4 3 25 3 2 12 2 1 15 1 27 -1 S1 Top2 -1 S2 Susun program (penggalan program) untuk mengeluarkan isi stack S1, dan memindahkan isinya ke stack S2, sehingga stack S1 menjadi kosong, dengan ilustrasi seperti gambar disebelah kanan ini. 7 7 6 Top2 6 27 5 5 15 4 4 12 3 3 25 2 2 33 1 1 5 17 Top1 -1 S1 -1 S2

4 Sudah ada tiga buah stack S1,S2 dan S3, yang dibuat dengan int S1[n], S2[n] dan S3[n]. Stack S1 sudah ada isinya, dan stack S2 dan S3, belum ada isinya, yang diilustrasikan dengan gambar disebelah kanan ini. 7 7 7 Top1 6 17 6 6 5 5 5 5 4 33 4 4 3 25 3 3 2 12 2 2 1 15 1 1 27 -1 S1 Top2 -1 S2 Top3 -1 S3 Susun program (penggalan program) untuk mengeluarkan isi stack S1, dan memindahkan isinya ke stack S2, sehingga stack S1 menjadi kosong, dengan ilustrasi seperti gambar disebelah kanan ini. Stack S3 dapat digunakan bilamana diperlukan 7 7 7 6 6 Top2 6 17 5 5 5 5 4 4 4 33 3 25 3 3 2 2 12 2 15 1 1 1 27 -1 -1 Top1 S3 S1 -1 Top3 S2

5 Sudah ada tiga buah stack S1,S2 dan S3, yang dibuat dengan int S1[n], S2[n] dan S3[n]. Stack S1 sudah ada isinya, dan stack S2 dan S3, belum ada isinya, yang diilustrasikan dengan gambar disebelah kanan ini. 7 7 7 Top1 6 17 6 6 5 5 5 5 4 33 4 4 3 25 3 3 2 12 2 2 1 15 1 1 27 -1 S1 Top2 -1 S2 Top3 -1 S3 Susun program (penggalan program) untuk mengeluarkan isi stack S1, dan memindahkan isinya ke stack S2, sehingga stack S1 menjadi kosong, dan isi stack S2 urut menaik dengan ilustrasi seperti gambar disebelah kanan ini. Stack S3 dapat digunakan bilamana diperlukan 7 7 7 6 6 Top2 6 33 5 5 5 27 4 4 4 25 3 17 3 3 2 2 15 2 12 1 1 1 5 -1 -1 Top1 S3 S1 -1 Top3 S2