01 single stack

105
1 Fakultas Teknologi Informasi Universitas Budi Luhur Kurikulum

Upload: sangkil05

Post on 04-Jul-2015

244 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 01 Single Stack

1

Fakultas Teknologi Informasi

Universitas Budi Luhur

Kurikulum

Page 2: 01 Single Stack

2

U m u m

Page 3: 01 Single Stack

3

Buku Literatur

Page 4: 01 Single Stack

4

Buku Literatur

Page 5: 01 Single Stack

5

Buku Literatur

Page 6: 01 Single Stack

6

materi

1. Stack

2. Queue

3. Linked List

4. Tree

5. Graph

6. Search & Sort

Page 7: 01 Single Stack

7

. Stack

. Queue

. Tree

. Graph

Pokok Pembahasan

Page 8: 01 Single Stack

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

Page 9: 01 Single Stack

9

6.3 & 7.3NESTED LOOP

STACK

Page 10: 01 Single Stack

10

STACK( TUMPUKAN )

Page 11: 01 Single Stack

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

Page 12: 01 Single Stack

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.

Page 13: 01 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 )

Page 14: 01 Single Stack

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 :

Page 15: 01 Single Stack

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

Page 16: 01 Single Stack

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

Page 17: 01 Single Stack

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

Page 18: 01 Single Stack

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

Page 19: 01 Single 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[ ]

Page 20: 01 Single Stack

20

Algoritma dasaruntuk

PUSH

Page 21: 01 Single Stack

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

Page 22: 01 Single Stack

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

Page 23: 01 Single Stack

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

Page 24: 01 Single Stack

24

A = B; Yang diisi, variabel Aatau variabel B

?

25

A

17

B

A = B;

A B

Sebelum :

Sesudah : ?

Page 25: 01 Single Stack

25

A = B; Yang diisi adalah : variabel A

25

A

17

B

A = B;

17

A

17

B

Sebelum :

Sesudah :

Page 26: 01 Single Stack

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

Page 27: 01 Single Stack

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

Page 28: 01 Single 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

Page 29: 01 Single 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

Page 30: 01 Single 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

Page 31: 01 Single Stack

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

Page 32: 01 Single Stack

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 :

Page 33: 01 Single Stack

33

Algoritma dasaruntuk

POP

Page 34: 01 Single Stack

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

Page 35: 01 Single Stack

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

Page 36: 01 Single Stack

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

Page 37: 01 Single Stack

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

Page 38: 01 Single Stack

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

Page 39: 01 Single Stack

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

Page 40: 01 Single Stack

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

Page 41: 01 Single Stack

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

Page 42: 01 Single Stack

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

Page 43: 01 Single Stack

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

Page 44: 01 Single Stack

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

Page 45: 01 Single Stack

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

Page 46: 01 Single Stack

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

Page 47: 01 Single Stack

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

Page 48: 01 Single Stack

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

Page 49: 01 Single Stack

49

1.2.4 Kondisi Stack.

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

Page 50: 01 Single Stack

50

Kondisi Stack.

a. KOSONG

b. PENUH

c. BISA DIISI

d. ADA ISINYA

law

an

nya

law

an

nya

Page 51: 01 Single Stack

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

Page 52: 01 Single Stack

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

Page 53: 01 Single Stack

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

Page 54: 01 Single Stack

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

Page 55: 01 Single Stack

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

Page 56: 01 Single Stack

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

Page 57: 01 Single Stack

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

Page 58: 01 Single Stack

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

Page 59: 01 Single Stack

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

Page 60: 01 Single Stack

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

Page 61: 01 Single Stack

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

Page 62: 01 Single Stack

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

Page 63: 01 Single Stack

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

Page 64: 01 Single Stack

64

1.2.5 Algoritma PUSH dan POP yang lengkap.

Page 65: 01 Single Stack

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

Page 66: 01 Single Stack

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

Page 67: 01 Single Stack

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

Page 68: 01 Single Stack

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

Page 69: 01 Single Stack

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

Page 70: 01 Single Stack

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

Page 71: 01 Single Stack

71

a. Algoritma yang lengkap untuk proses PUSH

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

Page 72: 01 Single Stack

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

Page 73: 01 Single Stack

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

Page 74: 01 Single Stack

74

1.2.6 Contoh Soal PUSH dan POP .

Baca sendiri di diktat

Page 75: 01 Single Stack

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.

Page 76: 01 Single Stack

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

Page 77: 01 Single Stack

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

Page 78: 01 Single Stack

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

Page 79: 01 Single Stack

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

Page 80: 01 Single Stack

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.

Page 81: 01 Single Stack

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.

Page 82: 01 Single Stack

82

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

Page 83: 01 Single Stack

83

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

Page 84: 01 Single 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

Page 85: 01 Single 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.

Page 86: 01 Single 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.

Page 87: 01 Single 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

Page 88: 01 Single Stack

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.

Page 89: 01 Single Stack

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.

Page 90: 01 Single Stack

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

Page 91: 01 Single Stack

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.

Page 92: 01 Single Stack

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.

Page 93: 01 Single Stack

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.

Page 94: 01 Single Stack

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

Page 95: 01 Single Stack

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

Page 96: 01 Single Stack

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.

Page 97: 01 Single Stack

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.

Page 98: 01 Single Stack

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

Page 99: 01 Single Stack

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

Page 100: 01 Single Stack

100

Page 101: 01 Single Stack

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

Page 102: 01 Single Stack

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

Page 103: 01 Single Stack

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

Page 104: 01 Single Stack

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

Page 105: 01 Single Stack

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