01 single stack

Post on 04-Jul-2015

245 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Fakultas Teknologi Informasi

Universitas Budi Luhur

Kurikulum

2

U m u m

3

Buku Literatur

4

Buku Literatur

5

Buku Literatur

6

materi

1. Stack

2. Queue

3. Linked List

4. Tree

5. Graph

6. Search & Sort

7

. Stack

. Queue

. Tree

. Graph

Pokok Pembahasan

8

Stack

Queue

Tree

Graph

linear

nonlinear

Array

Linked-List

(statis)

(dinamis)

struktur Peng-alokasi-anmemory

Satu dimensi

Dua dimensi

Linear

NonLinear

StackQueueTree

Graph

StackQueue

TreeGraph

9

6.3 & 7.3NESTED LOOP

STACK

10

STACK( TUMPUKAN )

11

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

7

6

5

4

3

2

1

12

Buku-4

Buku-3

Buku-2

Buku-1

4

3

2

1

1

2

3

4

Top

Meja

NomorUrut Masuk(PUSH)

Nomor UrutKeluar (POP)

1. Single Stack. Stack Tunggal, satu stack dalam satu collection

1.1 Ilustrasi Single Stack.

13

Dalam struktur STACK, digunakan

istilah :

- PUSH untuk : Simpan, atau Masuk,

atau

Insert, atau Tulis.

- POP untuk : Ambil, atau Keluar, atau

Delete, atau Baca, atau

HapusPrinsip atau Konsep prosesnya disebut :

L I F O ( Last In First Out )

14

1.2 Representasi Single Stack menggunakan Array Satu Dimensi.

0 1 2 3 4 5 6 7 8 9

misal n = 10n-1

Top

Top X

3

25 12 17 10 S[ ]

1.2.1 Ilustrasi Single Stack menggunakan Array Satu Dimensi

#define n 10----int S[n];int Top, X;

misal dibuat dengan :

15

0 1 2 3 4 5 6 7 8 9

n-1

Top

Top X

3

25 12 17 10 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 : ?

PUSHPOP

16

0 1 2 3 4 5 6 7 8 9

n-1

Top

Top X

3

25 12 17 10 S[ ]

Pertanyaan : dalam keadaan seperti sekarang

Kalau ada perintah POP ( Keluar, Ambil)

maka akan diambil isi elemen nomor : ?dan Top akan menunjuk elemen nomor : ?

PUSHPOP

17

Ilustrasi Stack.

0 1 2 3 4 5 6 7 8 9

n-1

Top

25 12 17 10 S[ ]

Top

X X X X S[ ]

Top X

3

Diilustrasikan sebagai berikut :

0 1 2 3 4 5 6 7 8 9

n-1

18

LIFO (Last In First Out)

a. AWAL (Inisialisasi)b. PUSH (Insert, Masuk, Simpan, Tulis)c. POP (Delete, Keluar, Ambil , Baca / Hapus)

1.2.2 Prinsip / Konsep Proses pada Stack

1.2.3 Macam Proses pada Stack

19

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

0 1 2 3 4 5 6 7 8 9

n-1

Top Top X

-1

S[ ]

20

Algoritma dasaruntuk

PUSH

21

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

Top X

3

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

22

Pertanyaan : dalam keadaan seperti sekarang

Kalau ada perintah PUSH (Isi, Masuk, Simpan)

maka akan diisi di elemen nomor : 4dan Top akan menunjuk elemen nomor : 4

Top

Top X

3

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

23

Pilih algoritma yang benaruntuk 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

3 15Top

25 12 17 10 S[ ]

Top X

4 15Top

25 12 17 10 15 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1Setelah nilai X diPUSHKe Stack

Sebelum nilai X diPUSHKe Stack

24

A = B; Yang diisi, variabel Aatau variabel B

?

25

A

17

B

A = B;

A B

Sebelum :

Sesudah : ?

25

A = B; Yang diisi adalah : variabel A

25

A

17

B

A = B;

17

A

17

B

Sebelum :

Sesudah :

26

17A

0 1 2 3 4 5

17

Untuk mengisi elemen A[3]Pilih instruksi yang benar :

a.

b.

A[3] = X;

X

X = A[3];

27

Pilih algoritma yang benaruntuk 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

3 15Top

25 12 17 10 S[ ]

Top X

4 15Top

25 12 17 10 15 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1Setelah nilai X diPUSHKe Stack

Sebelum nilai X diPUSHKe Stack

28

Pilih algoritma yang benaruntuk 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

3 15Top

25 12 17 10 S[ ]

Top X

4 15Top

25 12 17 10 15 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1Setelah nilai X diPUSHKe Stack

Sebelum nilai X diPUSHKe Stack

29

Untuk PUSH Algoritma yang benar

Top = Top + 1;S[Top] = X;

Top X

3 15Top

25 12 17 10 S[ ]

Top X

4 15Top

25 12 17 10 15 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1Setelah nilai X diPUSHKe Stack

Sebelum nilai X diPUSHKe Stack

30

Top X

3 15

Top

25 12 17 10 S[ ]

Top X

4 15

Top

25 12 17 10 15 S[ ]

Top

25 12 17 10 S[ ]

Top X

4 15

Dengan : Top = Top + 1;

Dengan : S[Top] = X;

Algoritma PUSH yang benar : Top = Top + 1; S[Top] = X;

Sebelum :

Sesudah :

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

31

Algoritma PUSH yang SALAH : S[Top] = X;Top = Top + 1;

Top X

3 15

Top

25 12 17 10 S[ ]

Top X

4 15

Top

25 12 17 15 S[ ]

Top

25 12 17 15 S[ ]

Top X

3 15

Dengan : Top = Top + 1;

Dengan : S[Top] = X;

Sebelum :

Sesudah :

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

32

Algoritma dasar untuk PUSH

Top = Top + 1; S[Top] = X;

Top+= 1; S[Top] = X;

Top++; S[Top] = X;

S[++Top] = X;

atau :

atau :

atau :

33

Algoritma dasaruntuk

POP

34

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

Top X

3

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

35

Pertanyaan : dalam keadaan seperti sekarang

Kalau ada perintah POP ( Keluar, Ambil)

maka akan diambil isi elemen nomor : 3dan setelah itu Top akan menunjuk elemen nomor

: 2

Top

Top X

3

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

36

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

3Top

25 12 17 10 S[ ]

Top X

2 10Top

25 12 17 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1Setelah POP

Sebelum POP

37

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

3Top

25 12 17 10 S[ ]

Top X

2 10Top

25 12 17 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1Setelah POP

Sebelum POP

38

Untuk POP Algoritma yang benar

X = S[Top];Top = Top - 1;

Top X

3Top

25 12 17 10 S[ ]

Top X

2 10Top

25 12 17 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1Setelah POP

Sebelum POP

39

Pertanyaan :Setelah 10 disimpan di Xapakah nilai 10

masih ada dalam S[3] ?

Pertanyaan :Setelah Top dipindahkan menunjuk S[2] apakah nilai 10masih ada dalam S[3]

?

Jawab :

Jawab :

Top X

2 10Top

25 12 17 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1Setelah POP

Top X

3Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1Sebelum POP

3 10Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1Isi X

Top X

40

Pertanyaan :Setelah 10 disimpan di Xapakah nilai 10

masih ada dalam S[3] ?

Pertanyaan :Setelah Top dipindahkan menunjuk S[2] apakah nilai 10masih ada dalam S[3]

?

Jawab : masih ada

Jawab : masih adatapi untuk keperluan ilustrasi, nilainya dihapus

Top X

2 10Top

25 12 17 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1Setelah POP

Top X

3Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1Sebelum POP

3 10Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1Isi X

Top X

41

Algoritma POP yang benar : X = S[Top];Top = Top - 1;

Kita Ulangi

Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1Sebelum POP

Top X

3

42

Dengan : X=S[Top];

Top X

3

Algoritma POP yang benar : X = S[Top];Top = Top - 1;

Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1Sebelum POP

Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

Top X

3 10

43

Dengan : X=S[Top];

Top X

3

Algoritma POP yang benar : X = S[Top];Top = Top - 1;

Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1Sebelum POP

Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

Top X

3 10

Dengan : Top = Top -1;

Top

25 12 17 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

Top X

2 10

44

Algoritma dasar untuk POP

X = S[Top]; Top = Top - 1;

atau :

atau :

atau :

X = S[Top]; Top-=1;

X = S[Top]; Top--;

X = S[Top--];

45

Algoritma POP yang SALAH : Top = Top - 1;X = S[Top];

Dengan : Top = Top -1;

Top X

3

Top

25 12 17 10 S[ ]

Sebelum POP

Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

Top X

2

Dengan : X = S[Top];

Top

25 12 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

Top X

2 17

46

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 dibuatbersifat GLOBAL

47

#include<stdio.h>void AWAL (void);void PUSH(void);void POP(void);define n 10int 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 bersifatGLOBAL

48

Ilustrasi Stack.

Diilustrasikan sebagai berikut :

Top X

3Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

Top

X X X X S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

49

1.2.4 Kondisi Stack.

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

50

Kondisi Stack.

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

law

an

nya

law

an

nya

51

Kondisi Stack.

Kondisi Stack :

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9

n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

52

Kondisi Stack.

Kondis Stack :

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

Gambar : ?

Gambar : ?

Gambar : ?

Gambar : ?

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9

n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

53

Kondisi Stack.

Kondis Stack :

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

Gambar :

Gambar : ?

Gambar : ?

Gambar : ?

1

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9

n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

54

Kondisi Stack.

Kondis Stack :

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

Gambar :

Gambar :

Gambar : ?

Gambar : ?

1

3

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9

n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

55

Kondisi Stack.

Kondis Stack :

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

Gambar :

Gambar :

Gambar :

Gambar : ?

1

3

1 2Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9

n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

56

Kondisi Stack.

Kondis Stack :

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

Gambar :

Gambar :

Gambar :

Gambar :

1

3

1 2

2 3

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9

n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9

n-1

0 1 2 3 4 5 6 7 8 9

n-1

57

Kondisi Stack.

Kondis Stack :

a. KOSONG : ?

b. PENUH : ?

c. BISA DIISI : ?

d. ADA ISINYA : ?

1

3

1 2

2 3

cirinya

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9 n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9 n-1

0 1 2 3 4 5 6 7 8 9 n-1

58

Kondisi Stack.

Kondis Stack :

a. KOSONG : Top = -1

b. PENUH : ?

c. BISA DIISI : ?

d. ADA ISINYA : ?

1

3

1 2

2 3

cirinya

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9 n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9 n-1

0 1 2 3 4 5 6 7 8 9 n-1

59

Kondisi Stack.

Kondis Stack :

a. KOSONG : Top = -1

b. PENUH : Top = n-1

c. BISA DIISI : ?

d. ADA ISINYA : ?

1

3

1 2

2 3

cirinya

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9 n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9 n-1

0 1 2 3 4 5 6 7 8 9 n-1

60

Kondisi Stack.

Kondis Stack :

a. KOSONG : Top = -1

b. PENUH : Top = n-1

c. BISA DIISI : Top < n-1

d. ADA ISINYA : ?

1

3

1 2

2 3

cirinya

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9 n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9 n-1

0 1 2 3 4 5 6 7 8 9 n-1

61

Kondisi Stack.

Kondis Stack :

a. KOSONG : Top = -1

b. PENUH : Top = n-1

c. BISA DIISI : Top < n-1

d. ADA ISINYA : Top > -1

1

3

1 2

2 3

cirinya

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9 n-1

Top

1

2

3

0 1 2 3 4 5 6 7 8 9 n-1

0 1 2 3 4 5 6 7 8 9 n-1

62

Kondisi Stack.

0 1 2 3 4 5 6 7 8 9

n-1

Top

X X X X

Kondis Stack :a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

cirinya

Top = -1

Top = n-1

Top < n-1

Top > -1

63

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 3

1.2.4 Kondisi Stack.

Top

X X X X

Top

X X X X X X X X X X

Top

1

2

3

0 1 2 3 4 5 6 7 8 9 n-1

0 1 2 3 4 5 6 7 8 9 n-1

0 1 2 3 4 5 6 7 8 9 n-1

64

1.2.5 Algoritma PUSH dan POP yang lengkap.

65

a. Algoritma yang lengkap untuk proses PUSH

Bila ada instruksi PUSHmaka akan d isi di elemen

nomor : ?Top

X X X X

0 1 2 3 4 5 6 7 8 9

n-1

66

a. Algoritma yang lengkap untuk proses PUSH

Bila ada instruksi PUSHmaka akan d isi di elemen

nomor : ?

Bila ada instruksi PUSHmaka akan d isi di elemen

nomor : 4

0 1 2 3 4 5 6 7 8 9

n-1

Top

X X X X

Top

X X X X

0 1 2 3 4 5 6 7 8 9

n-1

67

a. Algoritma yang lengkap untuk proses PUSH

Bila ada instruksi PUSHmaka akan diisi di elemen

nomor : 4

Dalam kondisi PENUHBolehkah melakukan PUSH ?

Jawab : ?

0 1 2 3 4 5 6 7 8 9

n-1

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9

n-1

68

a. Algoritma yang lengkap untuk proses PUSH

Bila ada instruksi PUSHmaka akan d isi di elemen

nomor : 4

Dalam kondisi PENUHBolehkah melakukan PUSH ?

Jawab : TIDAK BOLEH

0 1 2 3 4 5 6 7 8 9

n-1

Top

X X X X

Top

X X X X X X X X X X

0 1 2 3 4 5 6 7 8 9

n-1

69

a. Algoritma yang lengkap untuk proses PUSH

Ilustrasi Stack

Bila Stack PENUH, maka Tidak Boleh melakukan PUSHsehingga, sebelum PUSH,perlu dioeriksa apakah Stack dalam keadaan :

a. apakah KOSONG

b. apakah PENUH

c. apakah BISA DIISI

d. apakah ADA ISINYA

?

0 1 2 3 4 5 6 7 8 9

n-1

Top

X X X X

70

a. Algoritma yang lengkap untuk proses PUSH

Bila BISA DIISI

silahkan PUSH

sebaliknya (else)

Bila PENUH jangan PUSH

sebaliknya (else) silahkan PUSH

jangan PUSH

Ilustrasi Stack

0 1 2 3 4 5 6 7 8 9

n-1

Top

X X X X

71

a. Algoritma yang lengkap untuk proses PUSH

void PUSH(void){ if ( BISA DIISI ) { Top = Top + 1; S[Top] = X; } else printf( “Stack Penuh”);}

72

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

73

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

74

1.2.6 Contoh Soal PUSH dan POP .

Baca sendiri di diktat

75

1.3 Aplikasi Stack.

Memeriksa kelengkapan pasangan kurung buka dan kurung tutup suatu arithmetic statement

1.3.1.

A + B * ( C - D) / ( E + F ) BENAR

A + B * ( C - D / ( E + F ) SALAH

Merobah (konversi) bentuk INFIX menjadi bentuk POSTFIX

1.3.2.

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.

1.3.3.

76

1.4 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-10 1 2 3 4 5 6 7 8 9 10

BatasAtasTop

Dasar

77

n0 1 2 3 4 5 6 7 8 9 10

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

78

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;

dibuat 10 elemenS[0] sampai dengan S[9]

tipe : char

b. Initialisasi.

void Intitialize(StackType *P ) { P->Top = -1; }

79

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

80

X X X X

0 1 2 3 4 5 6 n-1

Top

Soal-I. Untuk Stack yang diilustrasikan pada Gambar diatas :

a. Kosongb. Penuhc. Bisa diisid. Ada isinya

1. Sebutkan ciri bahwa Stack :

2. Tulis algoritma dasar untuk:a. PUSHb. POP

3. Tulis algoritma yang lengkap untuk:a. PUSHb. 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.

81

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.

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.

84

6. Bila Stack berisi bilangan integer, maka susun algoritma untuk menghitung dan mencetak total isi Stack tanpa menghapus isi Stack.

Top X

3Top

25 12 17 10 S[ ]

0 1 2 3 4 5 6 7 8 9

n-1

64

Total

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.

87

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

Top

X X X X

Top X

3

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.

90

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

Top

X X X X X X X X X X X X X X X

Top X

14

91

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.

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.

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

Top

X X X X X X X X X X X X X X X

Top X

14

95

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

Top

X X X X X X X X

Top X

7

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.

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

Top

X X X X X X X X

Top X

7

99

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

Top

X X X X X X X X X X X X X X X

Top X

14

100

101

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

102

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

103

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.

175

33251215270

1

2

3

4

5

6

7

-1 S1

Top1

01

2

3

4

5

6

7

-1 S2Top2

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.

01

2

3

4

5

6

7

-1 S1Top1

27151225335

1701

2

3

4

5

6

7

-1 S2

Top2

104

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.

175

33251215270

1

2

3

4

5

6

7

-1 S1

Top1

01

2

3

4

5

6

7

-1 S2Top2

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

01

2

3

4

5

6

7

-1 S1Top1

175

33251215270

1

2

3

4

5

6

7

-1 S2

Top2

01

2

3

4

5

6

7

-1 S3Top3

01

2

3

4

5

6

7

-1 S3Top3

105

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.

175

33251215270

1

2

3

4

5

6

7

-1 S1

Top1

01

2

3

4

5

6

7

-1 S2Top2

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

01

2

3

4

5

6

7

-1 S1Top1

33272517151250

1

2

3

4

5

6

7

-1 S2

Top2

01

2

3

4

5

6

7

-1 S3Top3

01

2

3

4

5

6

7

-1 S3Top3

top related