Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

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

Presentasi serupa


Presentasi berjudul: "1. 2 Stack Queue Tree Graph linear non linear Array Linked- List (statis) (dinamis) struktur Peng-alokasi-an memory Satu dimensi Dua dimensi Linear Non."— Transcript presentasi:

1 1

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

3 3 6.3 & 7.3 NESTED LOOP STACK

4 4 ( TUMPUKAN )

5 5 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++) insert delete

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

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

8 8 1.2 Representasi Single Stack menggunakan Array Satu Dimensi misal n = 10 n- 1 Top X S[ ] Ilustrasi Single Stack menggunakan Array Satu Dimensi #define n 10 - int S[n]; int Top, X; misal dibuat dengan :

9 n- 1 Top X S[ ] Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah PUSH ( Isi, Masuk, Simpan) maka akan diisi di elemen nomor : ? dan Top akan menunjuk elemen nomor : ? PUSH POP

10 n- 1 Top X S[ ] Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah POP ( Keluar, Ambil) maka akan diambil isi elemen nomor : ? dan Top akan menunjuk elemen nomor : ? PUSH POP

11 11 Ilustrasi Stack n- 1 Top S[ ] Top XXXX S[ ] Top X 3 Diilustrasikan sebagai berikut : n- 1

12 12 LIFO (Last In First Out) a. AWAL (Inisialisasi) b. PUSH (Insert, Masuk, Simpan, Tulis) c. POP (Delete, Keluar, Ambil, Baca / Hapus) Prinsip / Konsep Proses pada Stack Macam Proses pada Stack

13 13 void AWAL(void) { Top = -1; } a) Proses AWAL Catatan : Untuk memudahkan pembuatan program, maka array untuk Stack dan beberapa variabel yang terkait dibuat bersifat Glabal n- 1 Top X S[ ]

14 14 Algoritma dasar untuk PUSH

15 15 Pertanyaan : dalam keadaan seperti sekarang Kalau ada perintah PUSH (Isi, Masuk, Simpan) maka akan diisi di elemen nomor : ? dan Top akan menunjuk elemen nomor : ? Top X S[ ] n- 1

16 16 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 Top X S[ ] n- 1

17 17 Pilih algoritma yang benar untuk PUSH 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 X 315 Top S[ ] Top X 415 Top S[ ] n n- 1 Setelah nilai X diPUSH Ke Stack Sebelum nilai X diPUSH Ke Stack

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

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

20 20 17 A Untuk mengisi elemen A[3] Pilih instruksi yang benar : a. b. A[3] = X; X X = A[3];

21 21 Pilih algoritma yang benar untuk PUSH 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 X 315 Top S[ ] Top X 415 Top S[ ] n n- 1 Setelah nilai X diPUSH Ke Stack Sebelum nilai X diPUSH Ke Stack

22 22 Pilih algoritma yang benar untuk PUSH 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 X 315 Top S[ ] Top X 415 Top S[ ] n n- 1 Setelah nilai X diPUSH Ke Stack Sebelum nilai X diPUSH Ke Stack

23 23 Untuk PUSH Algoritma yang benar Top = Top + 1; S[Top] = X; Top X 315 Top S[ ] Top X 415 Top S[ ] n n- 1 Setelah nilai X diPUSH Ke Stack Sebelum nilai X diPUSH Ke Stack

24 24 Top X 315 Top S[ ] Top X 415 Top S[ ] Top S[ ] Top X 415 Dengan : Top = Top + 1; Dengan : S[Top] = X; Algoritma PUSH yang benar : Top = Top + 1; S[Top] = X; Sebelum : Sesudah : n n n- 1

25 25 Algoritma PUSH yang SALAH : S[Top] = X; Top = Top + 1; Top X 315 Top S[ ] Top X 415 Top S[ ] Top S[ ] Top X 315 Dengan : Top = Top + 1; Dengan : S[Top] = X; Sebelum : Sesudah : n n n- 1

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

27 27 Algoritma dasar untuk POP

28 28 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 : ? Top X S[ ] n- 1

29 29 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 Top X S[ ] n- 1

30 30 Untuk POP, Pilih algoritma yang benar 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 X S[ ] Top X 210 Top S[ ] n n- 1 Setelah POP Sebelum POP

31 31 Untuk POP, Pilih algoritma yang benar 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 X S[ ] Top X 210 Top S[ ] n n- 1 Setelah POP Sebelum POP

32 32 Untuk POP Algoritma yang benar S[Top] = X; Top = Top - 1; Top X S[ ] Top X 210 Top S[ ] n n- 1 Setelah POP Sebelum POP

33 33 Pertanyaan : Setelah 10 disimpan di X apakah nilai 10 masih ada dalam S[3] ? Pertanyaan : Setelah Top dipindahkan menunjuk S[2] apakah nilai 10 masih ada dalam S[3] ? Jawab : Top X 210 Top S[ ] n- 1 Setelah POP Top X S[ ] n- 1 Sebelum POP 310 Top S[ ] n- 1 Isi X Top X

34 34 Pertanyaan : Setelah 10 disimpan di X apakah nilai 10 masih ada dalam S[3] ? Pertanyaan : Setelah Top dipindahkan menunjuk S[2] apakah nilai 10 masih ada dalam S[3] ? Jawab : masih ada tapi untuk keperluan ilustrasi, nilainya dihapus Top X 210 Top S[ ] n- 1 Setelah POP Top X S[ ] n- 1 Sebelum POP 310 Top S[ ] n- 1 Isi X Top X

35 35 Algoritma POP yang benar : X = S[Top]; Top = Top - 1; Kita Ulangi Top S[ ] n- 1 Sebelum POP Top X 3

36 36 Dengan : X=S[Top]; Top X 3 Algoritma POP yang benar : X = S[Top]; Top = Top - 1; Top S[ ] n- 1 Sebelum POP Top S[ ] n- 1 Top X 310

37 37 Dengan : X=S[Top]; Top X 3 Algoritma POP yang benar : X = S[Top]; Top = Top - 1; Top S[ ] n- 1 Sebelum POP Top S[ ] n- 1 Top X 310 Dengan : Top = Top -1; Top S[ ] n- 1 Top X 210

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

39 39 Algoritma POP yang SALAH : Top = Top - 1; X = S[Top]; Dengan : Top = Top -1; Top X S[ ] Sebelum POP Top S[ ] n- 1 Top X 3 Dengan : X = S[Top]; Top S[ ] n- 1 Top X 217

40 40 void PUSH( void) { Top = Top + 1; S[Top] = X; } void POP(void) { X = S[Top]; Top = Top - 1; } b) Proses PUSH c) Proses POP Catatan : Semua variabel dibuat bersifat GLOBAL

41 41 #include 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

42 42 Ilustrasi Stack. Diilustrasikan sebagai berikut : Top X S[ ] n- 1 Top XXXX S[ ] n- 1

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

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

45 45 Kondisi Stack. Kondisi Stack : a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA Top XXXX XXXX X X X X X X n- 1 Top n n- 1

46 46 Kondisi Stack. Kondis Stack : a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA Gambar : ? Top XXXX XXXX X X X X X X n- 1 Top n n- 1

47 47 Kondisi Stack. Kondis Stack : a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA Gambar : Gambar : ? 1 Top XXXX XXXX X X X X X X n- 1 Top n n- 1

48 48 Kondisi Stack. Kondis Stack : a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA Gambar : Gambar : ? 1 3 Top XXXX XXXX X X X X X X n- 1 Top n n- 1

49 49 Kondisi Stack. Kondis Stack : a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA Gambar : Gambar : ? Top XXXX XXXX X X X X X X n- 1 Top n n- 1

50 50 Kondisi Stack. Kondis Stack : a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA Gambar : Top XXXX XXXX X X X X X X n- 1 Top n n- 1

51 51 Kondisi Stack. Kondis Stack : a. KOSONG : ? b. PENUH : ? c. BISA DIISI : ? d. ADA ISINYA : ? cirinya Top XXXX XXXX X X X X X X n- 1 Top n n- 1

52 52 Kondisi Stack. Kondis Stack : a. KOSONG : Top = -1 b. PENUH : ? c. BISA DIISI : ? d. ADA ISINYA : ? cirinya Top XXXX XXXX X X X X X X n- 1 Top n n- 1

53 53 Kondisi Stack. Kondis Stack : a. KOSONG : Top = -1 b. PENUH : Top = n-1 c. BISA DIISI : ? d. ADA ISINYA : ? cirinya Top XXXX XXXX X X X X X X n- 1 Top n n- 1

54 54 Kondisi Stack. Kondis Stack : a. KOSONG : Top = -1 b. PENUH : Top = n-1 c. BISA DIISI : Top < n-1 d. ADA ISINYA : ? cirinya Top XXXX XXXX X X X X X X n- 1 Top n n- 1

55 55 Kondisi Stack. Kondis Stack : a. KOSONG : Top = -1 b. PENUH : Top = n-1 c. BISA DIISI : Top < n-1 d. ADA ISINYA : Top > cirinya Top XXXX XXXX X X X X X X n- 1 Top n n- 1

56 56 Kondisi Stack n-1 Top XXXX Kondis Stack : a. KOSONG b. PENUH c. BISA DIISI d. ADA ISINYA cirinya Top = -1 Top = n-1 Top < n-1 Top > -1

57 57 Kondisi Stack c i r i (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 Kondisi Stack. Top XXXX XXXX X X X X X X n n n- 1

58 Algoritma PUSH dan POP yang lengkap.

59 59 a. Algoritma yang lengkap untuk proses PUSH Bila ada instruksi PUSH maka akan d isi di elemen nomor : ? Top XXXX n-1

60 60 a. Algoritma yang lengkap untuk proses PUSH Bila ada instruksi PUSH maka akan d isi di elemen nomor : ? Bila ada instruksi PUSH maka akan d isi di elemen nomor : n-1 Top XXXX XXXX n-1

61 61 a. Algoritma yang lengkap untuk proses PUSH Bila ada instruksi PUSH maka akan diisi di elemen nomor : 4 Dalam kondisi PENUH Bolehkah melakukan PUSH ? Jawab : ? n-1 Top XXXX XXXX X X X X X X n-1

62 62 a. Algoritma yang lengkap untuk proses PUSH Bila ada instruksi PUSH maka akan d isi di elemen nomor : 4 Dalam kondisi PENUH Bolehkah melakukan PUSH ? Jawab : TIDAK BOLEH n-1 Top XXXX XXXX X X X X X X n-1

63 63 a. Algoritma yang lengkap untuk proses PUSH Ilustrasi Stack 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 ? n-1 Top XXXX

64 64 a. Algoritma yang lengkap untuk proses PUSH Bila BISA DIISI silahkan PUSH sebaliknya (else) Bila PENUHjangan PUSH sebaliknya (else) silahkan PUSH jangan PUSH Ilustrasi Stack n-1 Top XXXX

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

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

67 67 b. Algoritma yang lengkap untuk proses POP void POP(void) { if (Top > -1 ) { X = S[Top]; Top = Top-1; } else printf(“Stack Kosong”); } 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; } atau : Bila ADA ISINYA lakukan POP Bila KOSONG jangan POP else lakukan POP

68 Contoh Soal PUSH dan POP. Baca sendiri di diktat

69 Aplikasi Stack. 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 A + B + C * D A + (B + C) * D A B + C D * + A B C + D * + INFIX POSTFIX Mencatat Return Address oleh Operating System sewaktu menjalankan sebuah program pada pelaksanaan call suatu function

70 Pointer sebagai penunjuk Stack. a. Menyiapkan Stack dan Pointer : define n 11 - int S[n], *Top, *BatasAtas, *Dasar - Dasar = &S[-1]; Top = &S[-1]; BatasAtas = &S[n-1]; n BatasAtasTop Dasar

71 71 n BatasAtasTop 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);

72 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; dibuat 10 elemen S[0] sampai dengan S[9] tipe : char b.Initialisasi. void Intitialize(StackType *P ) { P->Top = -1; }

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

74 74 XXXX n-1 Top Soal-I. Untuk Stack yang diilustrasikan pada Gambar diatas : a. Kosong b. Penuh c. Bisa diisi d. Ada isinya 1. Sebutkan ciri bahwa Stack : 2. Tulis algoritma dasar untuk: a. PUSH b. POP 3. Tulis algoritma yang lengkap untuk: a. PUSH b. POP 5. Tulis program (penggalan program) untuk mengeluarkan (POP) isi Stack satu per satu dan mencetaknya, sampai Stack menjadi kosong. 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. 1.6 Soal Latihan Mandiri.

75 75 6.Bila Stack berisi bilangan integer, maka susun algoritma untuk menghitung dan mencetak total isi Stack tanpa menghapus isi 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. 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.

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

77 77

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

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

80 80 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 S1 Top S2 Top2 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 S1 Top S2 Top2

81 81 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 S1 Top S2 Top2 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 S1 Top S2 Top S3 Top S3 Top3

82 82 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 S1 Top S2 Top2 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 S1 Top S2 Top S3 Top S3 Top3


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

Presentasi serupa


Iklan oleh Google