Anda di halaman 1dari 105

Fakultas Teknologi Informasi

Universitas Budi Luhur


K ik l
Kurikulum

1
Umum

2
Buku Literatur

3
Buku Literatur

4
Buku Literatur

5
materi
1. Stack
2. Queue
3 Linked List
3.
4. Tree
5. Graph
6 Search
6. Sea ch & So
Sortt

6
Pokok Pembahasan

. Stack
Stac
. Queue
Q
. Tree
. Graph
p

7
struktur Peng-alokasi-an
memory

Stack
Stack Satu Queue
dimensi Tree
linear Array
(statis)
Queue Dua
D
Graph
dimensi

T
Tree Stack
non Linear Queue
linear Linked-
List
Graph (dinamis) Non Tree
Linear Graph

8
STACK
6 3 & 7
6.3 7.3
3
NESTED LOOP

9
STACK
( TUMPUKAN )

10
delete
insert

A stack is an ordered
collection of items into which 7
new items may be inserted and 6
from which items may be 5
deleted at one end, called the
4
top off the
h stack.
k
3
2
( Y
Yedidyah
did h LL, M
Moshe
h JJ. A
A., and
d A
Aaron M.
M 1
Tenenbaum;
Data Structures Using C and C++)

11
1. Single Stack.
Stack Tunggal,
Stac ungga , satu stack a am satu co
stac dalam collection
ct on

1.1 Ilustrasi Single Stack.


Nomor Nomor U
N Urutt
Urut Keluar
Masuk (POP)
(PUSH)

Top 4 Buku-4 1

3 Buku-3 2

2 Buku-2 3
1 Buku-1 4
Meja

12
Dalam struktur STACK,
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 )

13
1.2 Representasi Single Stack menggunakan
Array Satu Dimensi.

1.2.1 Ilustrasi Single Stack menggunakan Array Satu Dimensi

misal n = 10
m
n-1
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10

misal dibuat dengan :


Top
#define n 10
-
-
3 -
-
Top X int S[n];
i
int Top, X;
14
n-1
0 1 2 3 4 5 6 7 8 9
PUSH
S[ ] 25 12 17 10
POP

Top

T
Top X

Pertanyaan : dalam keadaan seperti sekarang

Kalau ada perintah PUSH ( Isi, Masuk, Simpan)


maka akan diisi di elemen nomor : ?
d
dan Top akan
k menunjuk
k elemen
l nomor : ?
15
n-1
0 1 2 3 4 5 6 7 8 9
PUSH
S[ ] 25 12 17 10
POP

Top

T
Top X

Pertanyaan : dalam keadaan seperti sekarang

Kalau ada perintah POP ( Keluar, Ambil)


maka akan diambil isi elemen nomor : ?
d
dan Top akan
k menunjuk
k elemen
l nomor : ?
16
Ilustrasi Stack.

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

S[ ] 25 12 17 10

Top

Top X

Diilustrasikan sebagai berikut :


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

S[ ] X X X X

Top 17
1.2.2 Prinsip / Konsep Proses pada Stack

LIFO (Last
(L t In
I First
Fi t Out)
O t)

1.2.3 Macam Proses pada Stack

a. AWAL (Inisialisasi)
b. PUSH (Insert, Masuk, Simpan, Tulis)
c. POP (D
(Delete,
l t K Keluar,
l A
Ambil
bil , B
Baca / H
Hapus))

18
a) Proses AWAL

void AWAL(void) Catatan :


{ Untuk memudahkan pembuatan
Top = -1; program, maka array untuk Stack
} dan beberapa variabel yang
terkait dibuat bersifat Glabal

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

S[ ]

-1
Top X
Top

19
Algoritma dasar
un u
untuk

PUSH

20
n-1
0 1 2 3 4 5 6 7 8 9
S[ ] 25 12 17 10

Top
3

Top X

Pertanyaan : dalam keadaan seperti sekarang

Kalau ada perintah PUSH (Isi, Masuk, Simpan)


maka akan diisi di elemen nomor : ?
d
dan Top akan
k menunjuk
k elemen
l nomor : ?
21
n-1
0 1 2 3 4 5 6 7 8 9
S[ ] 25 12 17 10

Top

T
Top X

Pertanyaan : dalam keadaan seperti sekarang

Kalau ada perintah PUSH (Isi, Masuk, Simpan)


maka akan diisi di elemen nomor : 4
d
dan Top akan
k menunjuk
k elemen
l nomor : 4
22
Sebelum nilai X diPUSH Pilih algoritma
g yang
y g benar
Ke Stack n-1 untuk PUSH
0 1 2 3 4 5 6 7 8 9

S[[ ] 25 12 17 10 a. Top = Top + 1;


S[Top] = X;
Top 3 15
X
b. p = X;
S[Top]
Top
Top = Top + 1;
Setelah nilai X diPUSH
Ke Stack n-1 c. Top = Top + 1;
0 1 2 3 4 5 6 7 8 9
X = S[Top];

S[ ] 25 12 17 10 15
d. p
X = S[Top];
Top = Top + 1;
Top 4 15

Top
p X ?
23
A = B
B; Yang dii
Y diisi,
i variabel
i b l A ?
atau variabel B

Sebelum : 25 17

A B

A = B
B;

Sesudah
d h : ?
A B

24
A = B
B; Y
Yang dii
diisii adalah
d l h : variabel
i b l A

Sebelum : 25 17

A B

A = B
B;

Sesudah
d h : 17 17

A B

25
Untuk
U t k mengisi
i i elemen
l A[3]
0 1 2 3 4 5 Pilih instruksi yang benar :
A 17
a. A[3] = X;

b. X = A[3];
17
X

26
Sebelum nilai X diPUSH Pilih algoritma
g yang
y g benar
Ke Stack n-1 untuk PUSH
0 1 2 3 4 5 6 7 8 9

S[[ ] 25 12 17 10 a. S[Top] = X;
T p = Top
Top T p + 1;
Top 3 15
b. Top = Top + 1;
Top X S[T ] = X;
S[Top] X

Setelah nilai X diPUSH


Ke Stack n-1 c. Top = Top + 1;
0 1 2 3 4 5 6 7 8 9
X = S[Top];

S[ ] 25 12 17 10 15
d. p
X = S[Top];
Top = Top + 1;
Top 4 15

Top
p X ?
27
Sebelum nilai X diPUSH Pilih algoritma
g yang
y g benar
Ke Stack n-1 untuk PUSH
0 1 2 3 4 5 6 7 8 9

S[[ ] 25 12 17 10 a. S[Top] = X;
T p = Top
Top T p + 1;
Top 3 15
b. Top = Top + 1;
Top X S[T ] = X;
S[Top] X

Setelah nilai X diPUSH


Ke Stack n-1 c. Top = Top + 1;
0 1 2 3 4 5 6 7 8 9
X = S[Top];

S[ ] 25 12 17 10 15
d. p
X = S[Top];
Top = Top + 1;
Top 4 15

Top
p X

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

Top 3 15 Top = Top + 1;


X
p = X;
S[Top]
Top

Setelah nilai X diPUSH


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

S[ ] 25 12 17 10 15

Top 4 15

Top
p X

29
Algoritma PUSH yang benar : Top = Top + 1;
S[Top] = X;
Sebelum : n-1
0 1 2 3 4 5 6 7 8 9

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

S[ ] 25 12 17 10 4 15

Top X
Top

S
Sesudah
d h : n-1
Dengan : S[Top] = X;
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10 15 4 15

Top X
Top 30
Algoritma PUSH yang SALAH : S[Top] = X;
Top = Top + 1;
Sebelum : n-1
0 1 2 3 4 5 6 7 8 9

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

S[ ] 25 12 17 15 3 15

Top X
Top

S
Sesudah
d h : n-1
Dengan : Top = Top + 1;
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 15 4 15

Top X
Top 31
Algoritma
g dasar untuk PUSH

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

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

atau : Top++;
S[Top] = X;

atau : S[++Top]
S[ Top] = X;

32
Algoritma dasar
un u
untuk

POP

33
n-1
0 1 2 3 4 5 6 7 8 9
S[ ] 25 12 17 10

Top
3

Top X

Pertanyaan : dalam keadaan seperti sekarang

Kalau ada perintah POP ( Keluar, Ambil)


maka akan diambil isi elemen nomor : ?
d
dan setelah
l h itu Top akan
k menunjuk
k elemen
l nomor : ?
34
n-1
0 1 2 3 4 5 6 7 8 9
S[ ] 25 12 17 10

Top
3

Top X

Pertanyaan : dalam keadaan seperti sekarang

Kalau ada perintah POP ( Keluar, Ambil)


maka akan diambil isi elemen nomor : 3
d
dan setelah
l h itu Top akan
k menunjuk
k elemen
l nomor : 2
35
Untuk POP,
S b l
Sebelum POP n-1 Pilih algoritma
l ritm yang
n bbenar
n r
0 1 2 3 4 5 6 7 8 9
a. X = S[Top];
S[[ ] 25 12 17 10
Top = Top - 1;

Top 3
b. Top = Top - 1;
Top X X = S[Top];
S[T ]

Setelah POP c. Top = Top - 1;


n-1
S[Top] = X;
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 d. S[Top] = X;
T = Top
Top T - 1;1
Top 2 10

Top
p X
?
36
Untuk POP,
S b l
Sebelum POP n-1 Pilih algoritma
l ritm yang
n bbenar
n r
0 1 2 3 4 5 6 7 8 9
a. X = S[Top];
S[[ ] 25 12 17 10
Top = Top - 1;

Top 3
b. Top = Top - 1;
Top X X = S[Top];
S[T ]

Setelah POP c. Top = Top - 1;


n-1
S[Top] = X;
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 d. S[Top] = X;
T = Top
Top T - 1;1
Top 2 10

Top
p X

37
S b l
Sebelum POP n-1
0 1 2 3 4 5 6 7 8 9
Untuk POP
Algoritma yang benar
S[[ ] 25 12 17 10

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

Setelah POP n-1


0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17

Top 2 10

Top
p X

38
Sebelum POP n-1
0 1 2 3 4 5 6 7 8 9 Pertanyaan :
25 12 17 10 S t l h 10 disimpan
Setelah di i di X
S[ ]
apakah nilai 10

Top
p 3 masih ada dalam S[3] ?
Top X
Isi X n-1 Jawab :
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10
Pertanyaan :
3 10
Top Setelah Top dipindahkan
Top X menunjuk S[2]
Setelah POP n-1 apakah nilai 10
0 1 2 3 4 5 6 7 8 9 m ih ada
masih d ddalam
l m S[3] ?
S[ ] 25 12 17
Jawab :

Top 2 10
X
39
Top
Sebelum POP n-1
0 1 2 3 4 5 6 7 8 9 Pertanyaan :
25 12 17 10 S t l h 10 disimpan
Setelah di i di X
S[ ]
apakah nilai 10

Top
p 3 masih ada dalam S[3] ?
Top X
Isi X n-1 Jawab : masih ada
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10
Pertanyaan :
3 10
Top Setelah Top dipindahkan
Top X menunjuk S[2]
Setelah POP n-1 apakah nilai 10
0 1 2 3 4 5 6 7 8 9 m ih ada
masih d ddalam
l m S[3] ?
S[ ] 25 12 17
Jawab : masih ada
tapi untuk keperluan
Top 2 10 ilustrasi, nilainya dihapus
X
40
Top
Algoritma POP yang benar : X = S[Top];
Sebelum POP n-1
n Top
p = Top
p - 1;
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10 3

Top X
Top

Kita Ulangi

41
Algoritma POP yang benar : X = S[Top];
Sebelum POP n-1
n Top
p = Top
p - 1;
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10 3

Top X
Top
n-1 Dengan : X=S[Top];
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10 3 10

Top
p X
T
Top

42
Algoritma POP yang benar : X = S[Top];
Sebelum POP n-1
n Top
p = Top
p - 1;
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10 3

Top X
Top
n-1 Dengan : X=S[Top];
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10 3 10

Top
p X
T
Top

n-1 Dengan : Top = Top -1;


0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 2 10

Top
op X
Top
43
Algoritma
g dasar untuk POP

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

atau : X = S[Top];
[ p]
Top-=1;

atau : X = S[Top];
Top--;

atau : X = S[Top--];

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

S[ ] 25 12 17 10 3

Top X
Top
n-1 Dengan : Top = Top -1;
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10 2

Top
p X
T
Top

n-1 Dengan : X = S[Top];


0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 10 2 17

Top
op X
Top
45
b) Proses PUSH

void PUSH( void)


Catatan :
{
Top = Top + 1; Semua variabel dibuat
S[Top] = X; bersifat GLOBAL
}

c)) Proses POP

void POP(void)
{
X = S[Top];
Top = Top - 1;
}

46
#include<stdio.h> void AWAL(void)
void AWAL (void); {
void PUSH(void); Top = -1;
void POP(void); }
define n 10
int S[n]; void PUSH (void)
int Top, X; { Top = Top + 1;
S[top] = X;
void main( ) }
{ AWAL( );
- void POP (void)
- { X = S[top];
- Top = Top - 1;
scanf(“%i”,
f(“%i” &X)
&X); }
PUSH();
-
-
-
Semua
S m variabel
i b l b
bersifat
if t
POP( ); GLOBAL
printf(“%i”, X);
-
-
} 47
Ilustrasi Stack.

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

S[ ] 25 12 17 10

Top 3

Top X

Diilustrasikan sebagai
g berikut :

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

S[ ] X X X X

Top

48
1.2.4 Kondisi Stack.

a. KOSONG
b. PENUH
c. BISA DIISI
d. ADA ISINYA

49
Kondisi Stack.

a KOSONG
a.

b. PENUH
ya
lawanny
lawannya
a

c. BISA DIISI

d. ADA ISINYA

50
Kondisi Stack.

n-1
n Kondisi Stack :
0 1 2 3 4 5 6 7 8 9 a. KOSONG
1
b. PENUH

Top c. BISA DIISI

d. ADA ISINYA
n-1
0 1 2 3 4 5 6 7 8 9

2 X X X X

Top

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

3 X X X X X X X X X X

Top 51
Kondisi Stack.

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

1 a. KOSONG
G b :
Gambar ?
Top
b. PENUH
n-1 Gambar : ?
0 1 2 3 4 5 6 7 8 9

2 X X X X
c. BISA DIISI
Gambar : ?
Top

n-1 d ADA ISINYA


d.
0 1 2 3 4 5 6 7 8 9 Gambar : ?
3 X X X X X X X X X X

Top 52
Kondisi Stack.

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

1 a. KOSONG
Gambar : 1
Top
b. PENUH
n-1 Gambar : ?
0 1 2 3 4 5 6 7 8 9

2 X X X X
c. BISA DIISI
Gambar : ?
Top

n-1 d ADA ISINYA


d.
0 1 2 3 4 5 6 7 8 9 Gambar : ?
3 X X X X X X X X X X

Top 53
Kondisi Stack.

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

1 a. KOSONG
Gambar : 1
Top
b. PENUH
n-1 Gambar : 3
0 1 2 3 4 5 6 7 8 9

2 X X X X
c. BISA DIISI
Gambar : ?
Top

n-1 d ADA ISINYA


d.
0 1 2 3 4 5 6 7 8 9 Gambar : ?
3 X X X X X X X X X X

Top 54
Kondisi Stack.

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

1 a. KOSONG
Gambar : 1
Top
b. PENUH
n-1 Gambar : 3
0 1 2 3 4 5 6 7 8 9

2 X X X X
c. BISA DIISI
Gambar : 1 2
Top

n-1 d ADA ISINYA


d.
0 1 2 3 4 5 6 7 8 9 Gambar : ?
3 X X X X X X X X X X

Top 55
Kondisi Stack.

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

1 a. KOSONG
Gambar : 1
Top
b. PENUH
n-1 Gambar : 3
0 1 2 3 4 5 6 7 8 9

2 X X X X
c. BISA DIISI
Gambar : 1 2
Top

n-1 d ADA ISINYA


d.
0 1 2 3 4 5 6 7 8 9 Gambar : 2 3
3 X X X X X X X X X X

Top 56
Kondisi Stack.

n-1
n Kondis Stack :
0 1 2 3 4 5 6 7 8 9
cirinya
1
a. KOSONG : ?
Top
1

n-1
0 1 2 3 4 5 6 7 8 9 b. PENUH : ?
2 X X X X 3

Top c. BISA DIISI : ?


1 2
n-1
0 1 2 3 4 5 6 7 8 9
d ADA ISINYA :
d. ?
3 X X X X X X X X X X
2 3

Top

57
Kondisi Stack.

n-1
n Kondis Stack :
0 1 2 3 4 5 6 7 8 9
cirinya
1
a. KOSONG : Top = -1
Top
1

n-1
0 1 2 3 4 5 6 7 8 9 b. PENUH : ?
2 X X X X 3

Top c. BISA DIISI : ?


1 2
n-1
0 1 2 3 4 5 6 7 8 9
d ADA ISINYA :
d. ?
3 X X X X X X X X X X
2 3

Top

58
Kondisi Stack.

n-1
n Kondis Stack :
0 1 2 3 4 5 6 7 8 9
cirinya
1
a. KOSONG : Top = -1
Top
1

n-1
0 1 2 3 4 5 6 7 8 9 b. PENUH : Top = n-1
2 X X X X 3

Top c. BISA DIISI : ?


1 2
n-1
0 1 2 3 4 5 6 7 8 9
d ADA ISINYA :
d. ?
3 X X X X X X X X X X
2 3

Top

59
Kondisi Stack.

n-1
n Kondis Stack :
0 1 2 3 4 5 6 7 8 9
cirinya
1
a. KOSONG : Top = -1
Top
1

n-1
0 1 2 3 4 5 6 7 8 9 b. PENUH : Top = n-1
2 X X X X 3

Top c. BISA DIISI : Top < n-1


1 2
n-1
0 1 2 3 4 5 6 7 8 9
d ADA ISINYA :
d. ?
3 X X X X X X X X X X
2 3

Top

60
Kondisi Stack.

n-1
n Kondis Stack :
0 1 2 3 4 5 6 7 8 9
cirinya
1
a. KOSONG : Top = -1
Top
1

n-1
0 1 2 3 4 5 6 7 8 9 b. PENUH : Top = n-1
2 X X X X 3

Top c. BISA DIISI : Top < n-1


1 2
n-1
0 1 2 3 4 5 6 7 8 9
d ADA ISINYA : Top > -1
d. 1
3 X X X X X X X X X X
2 3

Top

61
Kondisi Stack.
n-1
n 1
0 1 2 3 4 5 6 7 8 9

X X X X

Top

Kondis Stack : cirinya

a. KOSONG Top = -1
1

b. PENUH Top = n-1

c. BISA DIISI Top < n-1

d. ADA ISINYA Top > -1


1

62
1.2.4 Kondisi Stack.
c i r i
Kondisi Stack Ilustrasi gambar
(posisi Top)

a. KOSONG tak ada isinya Top = -1 Gambar 1


b. PENUH tak bisa diisi lagi Top = n-1 Gambar 3
c. BISA DIISI (kebalikan dari PENUH) Top < n-1 Gambar 1 dan 2
d. ADA ISINYA (kebalikan dari KOSONG) Top > -1 Gambar 2 dan 3

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

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

Top 63
1.2.5
Algoritma PUSH dan POP yang lengkap.

64
a. Algoritma yang lengkap untuk proses PUSH

n-1
0 1 2 3 4 5 6 7 8 9
Bila ada instruksi PUSH
X X X X maka akan d isi di elemen
nomor : ?
Top

65
a. Algoritma yang lengkap untuk proses PUSH

n-1
0 1 2 3 4 5 6 7 8 9
Bila ada instruksi PUSH
X X X X maka akan d isi di elemen
nomor : ?
Top

n-1
0 1 2 3 4 5 6 7 8 9 Bila ada instruksi PUSH
X X X X maka akan d isi di elemen
nomor : 4
Top

66
a. Algoritma yang lengkap untuk proses PUSH

n-1
0 1 2 3 4 5 6 7 8 9
Bila ada instruksi PUSH
X X X X maka akan diisi di elemen
nomor : 4
Top

n-1
0 1 2 3 4 5 6 7 8 9
Dalam kondisi PENUH
X X X X X X X X X X Bolehkah melakukan PUSH ?

Top Jawab : ?

67
a. Algoritma yang lengkap untuk proses PUSH

n-1
0 1 2 3 4 5 6 7 8 9
Bila ada instruksi PUSH
X X X X maka akan d isi di elemen
nomor : 4
Top

n-1
0 1 2 3 4 5 6 7 8 9
Dalam kondisi PENUH
X X X X X X X X X X Bolehkah melakukan PUSH ?

Top Jawab : TIDAK BOLEH

68
a. Algoritma yang lengkap untuk proses PUSH

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

X X X X

Top

Bila Stack PENUH, maka Tidak Boleh melakukan PUSH


sehingga sebelum PUSH,
sehingga, PUSH
perlu dioeriksa apakah Stack dalam keadaan :

p
a. apakah KOSONG
b. apakah PENUH ?
c. apakah BISA DIISI
d apakah
d. k h ADA ISINYA
69
a. Algoritma yang lengkap untuk proses PUSH

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

X X X X

Top

Bila BISA DIISI silahkan PUSH

sebaliknya
b lk (else)
( l ) jangan PUSH

Bila PENUH jangan PUSH

sebaliknya (else) silahkan PUSH

70
a. Algoritma yang lengkap untuk proses PUSH

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

71
a. Algoritma yang lengkap untuk proses PUSH

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

atau void PUSH(void)


{ if ( Top == n-1 ) Bila PENUH
printf( “Stack
Stack Penuh”);
Penuh );
j
jangan PUSH
else
{ Top = Top + 1; else
S[Top] = X; u
lakukan PUSH
H
}
} 72
b. Algoritma yang lengkap untuk proses POP

void POP(void)
{ Bila ADA ISINYA
if (Top > -1 )
{
X = S[Top]; lakukan POP
Top = Top-1;
}
else
printf(“Stack
printf( Stack Kosong
Kosong”);
);
}
atau : Algoritma yang lengkap untuk proses POP dengan ‘logika terbalik’

void POP(void)
{
if ( Top == -1 ) Bila KOSONG
printf(“Stack
printf( Stack Kosong
Kosong”);
); jangan POP
else
{
X = S[Top]; else
Top = Top - 1; lakukan POP
}
} 73
1.2.6 Contoh Soal PUSH dan POP .

Baca sendiri di diktat

74
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


1.3.2.
bentuk POSTFIX

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

75
1.4 Pointer sebagai penunjuk Stack.

a. 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];
p = &S[-1];
Top [ ];
BatasAtas = &S[n-1];
76
n
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
l
printf(“Stack Penuh);
77
1.5 Representasi Stack menggunakan structure.
Perhatikan contoh berikut ini :

a. Menyiapkan Stack.

#define MAXSTACK 10

typedef char ItemType; tipe : char

typedef struct StackTag {


int Top;
ItemType
yp S[MAXSTACK];
[ ]; dibuat 10 elemen
} StackType; S[0] sampai dengan S[9]

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

78
1.5 Representasi Stack menggunakan structure.
Perhatikan contoh berikut ini :

c. Proses PUSH.
void
d P
PUSH(ItemType
H( item, StackType
k *P)
{ if(P->Top >= MAXSTACK-1)
printf(“Stack Penuh”);
else
P->entry[++P->Top] = item;

d. Proses POP.

void POP(ItemType
yp *Q, StackTypeyp *P)
{ if(P->Top <= -1)
printf(“Stack Kosong”);
else
*Q = P->S[P->Top--];
P S[P T ]
} 79
1.6 Soal Latihan Mandiri. 0 1 2 3 4 5 6 n-1

X X X X

Top

Soal-I.. Untuk
Un u Stack yang
y ng diilustrasikan
u n p
pada Gambar
G m diatas :
1. Sebutkan ciri bahwa Stack :
a. Kosong
b. Penuh 2. Tulis algoritma dasar untuk:
c. Bisa diisi a. PUSH
d. Ada isinya b. POP

g
3. Tulis algoritma yang
y g lengkap
g p untuk: a. PUSH
b. POP
4. Tulis program (penggalan program) untuk menginput data melalui
keyboard
y satu p
persatu dan m mem m 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
mencetaknya, sampai Stack menjadi
kosong.
80
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
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.
elemen, layar

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

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

83
6
6. Bila Stack berisi bilangan
g integer,
g , maka susun
algoritma untuk menghitung dan mencetak total
isi Stack tanpa menghapus isi Stack.
n-1
0 1 2 3 4 5 6 7 8 9

S[ ] 25 12 17 10

Top 3 64
T
Top X Total

84
7. Dianggap tempat yang tersedia mesih lebih dari 10
t
tempat.
t Tulis
T li program (penggalan
( l program)) untuk
t k
menginput sebanyak 10 buah data melalui keyboard
satu persatu dan mem Push data tersebut ke Stack.

85
7. Dianggap tempat yang tersedia mesih lebih dari 10
t
tempat.
t Tulis
T li program (penggalan
( l program)) untuk
t k
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
t
tempat.
t Tulis
T li program (penggalan
( l program)) untuk
t k
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

X X X X

Top
3

Top X

87
8. Dipastikan stack terisi lebih dari 10 elemen. Tulis
program (penggalan program) untuk mengeluarkan
(POP) isi stack sebanyak 10 elemen, satu per satu
dan mencetaknyay ke layar.
y

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 mencetaknyay ke layar.
y

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 mencetaknyay ke layar.
y

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1

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

Top
14

Top X

90
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,
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
k lu k n semua
keluarkan s mu isi stack,
st ck sampai
s mp i stack
st ck menjadi
m nj di kosong.
k s n

91
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.
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.
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.
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-11
n

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

Top
14

Top
p X

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

X X X X X X X X

Top
7

Top
p X

95
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.
elemen Tapi bila isi stack kurang dari
10 elemen, maka keluarkan semua isi stack, sampai
stack menjadi kosong.

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

X X X X X X X X

Top
7

Top
p X

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

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

Top
14

Top
p X

99
100
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
atas’.
dalam keadaan kosong, penuh, bisa diisi, atau
ada isinya.
y
Tulis program (penggalan program) untuk
menginput data melalui keyboard satu persatu
d
dan mem Push
P h data d t tersebut
t b t ke
k Stack
St k (bila
(bil
stack tersebut bisa diisi) sampai Stack penuh
tak bisa diisi lagi.
101
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
atas
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.

102
3 Sudah ada dua buah
stack S1,
S1 dan S2,
S2 yang 7 7
Top1 6 17 6
dibuat dengan int S1[n] 5 5 5
dan S2[n]. Stack S1 sudah 4 33 4
ada isinya, dan stack S2, 3 25 3
12
belum ada isinya, yang 2
15
2
1 1
diilustrasikan dengan 0 27 0
gambar disebelah kanan -1 S1 Top2 -1 S2
ini.

Susun program (penggalan


program)) untuk
t k 7 7
mengeluarkan isi stack 6 Top2 6 27
S1, dan memindahkan 5 5 15

isinya ke stack S2, S2


4 4 12
3 25
sehingga stack S1
3
2 2 33
menjadi kosong, dengan 1 1 5
ilustrasi seperti gambar Top1
0
-1
0 17
-1 S2
S1
disebelah kanan ini.
103
4
Sudah ada tiga buah stack S1,S2
S1 S2 7 7 7
Top1 6 17 6 6
dan S3, yang dibuat dengan int 5 5 5 5
S1[n], S2[n] dan S3[n]. Stack S1 4 33 4 4
sudah ada isinya, dan stack S2 3 25 3 3
12
dan S3, belum ada isinya, yang 2
15
2 2
1 1 1
diilustrasikan dengan gambar 0 27 0 0
disebelah kanan ini. -1 S1 Top2 -1 S2 Top3 -1 S3

Susun program (penggalan


program)) untuk
t k mengeluarkan
l k i i
isi 7 7 7
stack S1, dan memindahkan 6 Top2 6 17 6

isinya ke stack S2, sehingga 5 5 5 5


4
stack S1 menjadi kosong
kosong,
4 4 33
25 3
dengan ilustrasi seperti gambar
3 3
2 2 12 2
disebelah kanan ini. Stack S3 1 1 15 1

dapat digunakan bilamana 0 0 27 0


-1
1
Top1 -1 S1 -1 Top3 S3
diperlukan S2
104
5 Sudah ada tiga buah stack
S1,S2
, dan S3,, y yang
g dibuat 7 7 7
dengan int S1[n], S2[n] dan Top1 6 17 6 6

S3[n]. Stack S1 sudah ada


5 5 5 5
4 33 4 4
isinya, dan stack S2 dan S3, 3 25 3 3
belum ada isinya, yang 2 12 2 2
diilustrasikan dengan gambar 1 15
27
1 1

disebelah kanan ini.


0 0 0
-1 -1 -1
S1 Top2 S2 Top3 S3

Susun program (penggalan


program) untuk mengeluarkan isi
stackk S1,
S1 d
dan memindahkan
i d hk 7 7 7
isinya ke stack S2, sehingga 6 Top2 6 33 6

stack S1 menjadi kosong, dan 5 5


5 27
4
isi stack S2 urut menaik dengan
4 4 25
3 17 3
ilustrasi seperti gambar
3
2 2 15 2
disebelah kanan ini. Stack S3 1 1 12 1

dapat digunakan bilamana 0 0 5 0


-1
1
Top1 -1 S1 -1 S2 Top3 S3
diperlukan
105

Anda mungkin juga menyukai