Fakultas Teknologi Informasi
Universitas Budi LuhurUniversitas Budi Luhur
K ik lKurikulum
1
U m u m
2
Buku LiteraturBuku Literatur
3
Buku LiteraturBuku Literatur
4
Buku LiteraturBuku Literatur
5
materimateri
1. Stack
2. Queue
3 Linked List3. Linked List
4. Tree
5. Graph
6 Sea ch & So t6. Search & Sort
6
Pokok Pembahasan
. StackStac
. QueueQ
. Tree
. Graphp
7
struktur Peng-alokasi-an
Stack
memory
Satu StackQueueStack
Queuelinear Array
(statis)
dimensi
D
QueueTree
Queue
T
Dua dimensi Graph
Treenonlinear Linked-
List
LinearStackQueue
GraphList
(dinamis) NonLinear
TreeGraph
8
6 3 & 7 3STACK6.3 & 7.3NESTED LOOP
STACK
9
STACK( TUMPUKAN )( TUMPUKAN )
10
delete
insert
delete
A stack is an orderedcollection of items into whichnew items may be inserted and
7new items may be inserted andfrom which items may bedeleted at one end, called the
f h k
654top of the stack.
( Y did h L M h J A d A M
432
( Yedidyah L, Moshe J. A., and Aaron M. Tenenbaum; Data Structures Using C and C++)
1
11
1. Single Stack.Stack Tunggal, satu stack dalam satu collection
Nomor N U t
Stac ungga , satu stac a am satu co ct on
1.1 Ilustrasi Single Stack.NomorUrut Masuk(PUSH)
Nomor UrutKeluar (POP)
Buku-4
Buku-3
4
3
1
2
Top
Buku-2
Buku-1
2
1
3
4 Meja
12
Dalam struktur STACK digunakan istilah :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 )
13
1.2 Representasi Single Stack menggunakanArray Satu Dimensi.
misal n = 10
1.2.1 Ilustrasi Single Stack menggunakan Array Satu Dimensi
0 1 2 3 4 5 6 7 8 9
mn-1
25 12 17 10S[ ] 25 12 17 10S[ ]
Top#define n 10-
misal dibuat dengan :
Top X
3 ---int S[n];i
14
int Top, X;
0 1 2 3 4 5 6 7 8 9 n-1
25 12 17 10S[ ]PUSHPOP
Top
T X
3
Top X
Pertanyaan : dalam keadaan seperti sekarang
Kalau ada perintah PUSH ( Isi, Masuk, Simpan)maka akan diisi di elemen nomor : ?d k k l ?
15
dan Top akan menunjuk elemen nomor : ?
0 1 2 3 4 5 6 7 8 9 n-1
25 12 17 10S[ ]PUSHPOP
Top
T X
3
Top X
Pertanyaan : dalam keadaan seperti sekarang
Kalau ada perintah POP ( Keluar, Ambil)maka akan diambil isi elemen nomor : ?d k k l ?
16
dan Top akan menunjuk elemen nomor : ?
Ilustrasi Stack.
n-1
0 1 2 3 4 5 6 7 8 9
n 1
25 12 17 10S[ ]
Top
3
Top X
3
Diilustrasikan sebagai berikut :n 1
X X X XS[ ]0 1 2 3 4 5 6 7 8 9
n-1
17Top
LIFO (L t I Fi t O t)
1.2.2 Prinsip / Konsep Proses pada Stack
LIFO (Last In First Out)
1.2.3 Macam Proses pada Stack
a. AWAL (Inisialisasi)b. PUSH (Insert, Masuk, Simpan, Tulis)
POP (D l t K l A bil B / H )c. POP (Delete, Keluar, Ambil , Baca / Hapus)
18
void AWAL(void)
a) Proses AWAL
Catatan :void AWAL(void){
Top = -1;}
Untuk memudahkan pembuatanprogram, maka array untuk Stackdan beberapa variabel yangterkait dibuat bersifat Glabal
n-10 1 2 3 4 5 6 7 8 9
S[ ]
-1Top Top X
19
Algoritma dasaruntukun u
PUSH
20
0 1 2 3 4 5 6 7 8 9n-1
25 12 17 10S[ ]
Top3
Top X
3
Pertanyaan : dalam keadaan seperti sekarang
Kalau ada perintah PUSH (Isi, Masuk, Simpan)maka akan diisi di elemen nomor : ?d k k l ?
21
dan Top akan menunjuk elemen nomor : ?
0 1 2 3 4 5 6 7 8 9n-1
25 12 17 10S[ ]
Top
T X
3
Pertanyaan : dalam keadaan seperti sekarang
Top X
Kalau ada perintah PUSH (Isi, Masuk, Simpan)maka akan diisi di elemen nomor : 4d k k l 4
22
dan Top akan menunjuk elemen nomor : 4
Pilih algoritma yang benarSebelum nilai X diPUSH g y guntuk PUSH
a. Top = Top + 1;
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
n-1Ke Stack
S[Top] = X;
b. S[Top] = X;Top X
3 15Top
[ ]
pTop = Top + 1;
c. Top = Top + 1;
Top X
n-1Setelah nilai X diPUSHKe Stack
X = S[Top];
d. X = S[Top];25 12 17 10 15S[ ]
0 1 2 3 4 5 6 7 8 9
pTop = Top + 1;
?Top X
4 15Top
23
p
A B Y dii i i b l A ?A = B; Yang diisi, variabel Aatau variabel B
?
25 17Sebelum :
A B
A BA = B;
d h ?A B
Sesudah : ?
24
A B Y dii i d l h i b l AA = B; Yang diisi adalah : variabel A
25 17Sebelum :
A B
A BA = B;
d h 17
A
17
B
Sesudah :
25
U t k i i l A[3]
17A0 1 2 3 4 5
Untuk mengisi elemen A[3]Pilih instruksi yang benar :
17A a. A[3] = X;
17b. X = A[3];
X
26
Pilih algoritma yang benarSebelum nilai X diPUSH g y guntuk PUSH
a. S[Top] = X;T p T p 1;
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
n-1Ke Stack
Top = Top + 1;S[T ] X
b.
Top = Top + 1;
Top X
3 15Top
[ ]
S[Top] = X;
c. Top = Top + 1;
Top X
n-1Setelah nilai X diPUSHKe Stack
X = S[Top];
d. X = S[Top];25 12 17 10 15S[ ]
0 1 2 3 4 5 6 7 8 9
pTop = Top + 1;
?Top X
4 15Top
27
p
Pilih algoritma yang benarSebelum nilai X diPUSH g y guntuk PUSH
a. S[Top] = X;T p T p 1;
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
n-1Ke Stack
Top = Top + 1;S[T ] X
b.
Top = Top + 1;
Top X
3 15Top
[ ]
S[Top] = X;
c. Top = Top + 1;
Top X
n-1Setelah nilai X diPUSHKe Stack
X = S[Top];
d. X = S[Top];25 12 17 10 15S[ ]
0 1 2 3 4 5 6 7 8 9
pTop = Top + 1;
Top X
4 15Top
28
p
Sebelum nilai X diPUSH
Untuk PUSHAlgoritma yang benar25 12 17 10S[ ]
0 1 2 3 4 5 6 7 8 9
n-1Ke Stack
Top = Top + 1;S[Top] = X;Top X
3 15Top
[ ]
pTop X
n-1Setelah nilai X diPUSHKe Stack
25 12 17 10 15S[ ]
0 1 2 3 4 5 6 7 8 9
Top X
4 15Top
29
p
Algoritma PUSH yang benar : Top = Top + 1;S[Top] = X;
3 1525 12 17 10S[ ]
Sebelum :0 1 2 3 4 5 6 7 8 9
n-1
Top XTop
5 7 0S[ ]
n-1
25 12 17 10S[ ] 4 15
Dengan : Top = Top + 1;0 1 2 3 4 5 6 7 8 9
n-1
TopTop X
S d h
4 1525 12 17 10 15S[ ]
Dengan : S[Top] = X;Sesudah :0 1 2 3 4 5 6 7 8 9
n-1
30Top X
Top
Algoritma PUSH yang SALAH : S[Top] = X;Top = Top + 1;
3 1525 12 17 10S[ ]
Sebelum :0 1 2 3 4 5 6 7 8 9
n-1
Top XTop
5 7 0S[ ]
n-1
25 12 17 15S[ ] 3 15
Dengan : S[Top] = X;0 1 2 3 4 5 6 7 8 9
n-1
TopTop X
S d h
4 1525 12 17 15S[ ]
Dengan : Top = Top + 1;Sesudah :0 1 2 3 4 5 6 7 8 9
n-1
31Top X
Top
Algoritma dasar untuk PUSHg
Top = Top + 1;S[Top] = X;S[Top] = X;
Top+= 1;atau : Top+= 1;S[Top] = X;
Top++;S[Top] = X;
atau :
S[++Top] = X;atau :
32
S[ Top] X;
Algoritma dasaruntukun u
POP
33
0 1 2 3 4 5 6 7 8 9n-1
25 12 17 10S[ ]
Top3
Top X
3
Pertanyaan : dalam keadaan seperti sekarang
Kalau ada perintah POP ( Keluar, Ambil)maka akan diambil isi elemen nomor : ?d l h k k l ?
34
dan setelah itu Top akan menunjuk elemen nomor : ?
0 1 2 3 4 5 6 7 8 9n-1
25 12 17 10S[ ]
Top3
Top X
3
Pertanyaan : dalam keadaan seperti sekarang
Kalau ada perintah POP ( Keluar, Ambil)maka akan diambil isi elemen nomor : 3d l h k k l 2
35
dan setelah itu Top akan menunjuk elemen nomor : 2
Untuk POP,Pilih l ritm n b n rS b l POP Pilih algoritma yang benar
a. X = S[Top];Top = Top - 1;
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
n-1Sebelum POP
b. Top = Top - 1;X S[T ]
Top = Top - 1;
Top X
3Top
[ ]
Top = Top - 1;S[Top] = X;
c.
X = S[Top];Top X
n-1Setelah POPS[Top] = X;
S[Top] = X;T T 1
d.25 12 17S[ ]
0 1 2 3 4 5 6 7 8 9
Top = Top - 1;
?Top X
2 10Top
36
?p
Untuk POP,Pilih l ritm n b n rS b l POP Pilih algoritma yang benar
a. X = S[Top];Top = Top - 1;
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
n-1Sebelum POP
b. Top = Top - 1;X S[T ]
Top = Top - 1;
Top X
3Top
[ ]
Top = Top - 1;S[Top] = X;
c.
X = S[Top];Top X
n-1Setelah POPS[Top] = X;
S[Top] = X;T T 1
d.25 12 17S[ ]
0 1 2 3 4 5 6 7 8 9
Top = Top - 1;
Top X
2 10Top
37
p
S b l POPUntuk POPAlgoritma yang benar25 12 17 10S[ ]
0 1 2 3 4 5 6 7 8 9
n-1Sebelum POP
X = S[Top];Top = Top - 1;Top X
3Top
[ ]
p pTop X
n-1Setelah POP
25 12 17S[ ]
0 1 2 3 4 5 6 7 8 9
Top X
2 10Top
38
p
Pertanyaan :S t l h 10 di i di X
0 1 2 3 4 5 6 7 8 9
n-1Sebelum POP
Setelah 10 disimpan di Xapakah nilai 10masih ada dalam S[3] ?3Top
25 12 17 10S[ ]
Jawab :Top X
p
0 1 2 3 4 5 6 7 8 9
n-1Isi X
Pertanyaan :Setelah Top dipindahkan 3 10Top
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
Setelah Top dipindahkan menunjuk S[2] apakah nilai 10m ih d d l m S[3] ?0 1 2 3 4 5 6 7 8 9
n-1Setelah POP
TopTop X
masih ada dalam S[3] ?Jawab :25 12 17S[ ]
0 1 2 3 4 5 6 7 8 9
39Top X
2 10Top
Pertanyaan :S t l h 10 di i di X
0 1 2 3 4 5 6 7 8 9
n-1Sebelum POP
Setelah 10 disimpan di Xapakah nilai 10masih ada dalam S[3] ?3Top
25 12 17 10S[ ]
Jawab : masih adaTop X
p
0 1 2 3 4 5 6 7 8 9
n-1Isi X
Pertanyaan :Setelah Top dipindahkan 3 10Top
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
Setelah Top dipindahkan menunjuk S[2] apakah nilai 10m ih d d l m S[3] ?0 1 2 3 4 5 6 7 8 9
n-1Setelah POP
TopTop X
masih ada dalam S[3] ?Jawab : masih adatapi untuk keperluan
25 12 17S[ ]
0 1 2 3 4 5 6 7 8 9
40
tapi untuk keperluan ilustrasi, nilainya dihapus
Top X
2 10Top
Algoritma POP yang benar : X = S[Top];Top = Top - 1;n-1Sebelum POP p p
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
n 1Sebelum POP
X
3
TopTop X
Kita Ulangi
41
Algoritma POP yang benar : X = S[Top];Top = Top - 1;n-1Sebelum POP
X
3
p p
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
n 1Sebelum POP
Dengan : X=S[Top];
Top XTop
0 1 2 3 4 5 6 7 8 9
n-1
T
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
Top X
3 10
Topp
42
Algoritma POP yang benar : X = S[Top];Top = Top - 1;n-1Sebelum POP
X
3
p p
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
n 1Sebelum POP
Dengan : X=S[Top];
Top XTop
0 1 2 3 4 5 6 7 8 9
n-1
T
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
Top X
3 10
Topp
Dengan : Top = Top -1;0 1 2 3 4 5 6 7 8 9
n-1
25 12 17S[ ]0 1 2 3 4 5 6 7 8 9
Top X
2 10
43
Topop
Algoritma dasar untuk POPg
X = S[Top];Top = Top - 1;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
X
325 12 17 10S[ ]
Sebelum POP
Dengan : Top = Top -1;
Top XTop
0 1 2 3 4 5 6 7 8 9
n-1
T
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
Top X
2
Topp
Dengan : X = S[Top];0 1 2 3 4 5 6 7 8 9
n-1
25 12 10S[ ]0 1 2 3 4 5 6 7 8 9
Top X
2 17
45
Topop
b) Proses PUSH
void PUSH( void){Top = Top + 1;
Catatan :
Semua variabel dibuatS[Top] = X;
}
Semua variabel dibuatbersifat GLOBAL
c) Proses POP
void POP(void){
)
{X = S[Top]; Top = Top - 1;
}
46
}
#include<stdio.h>void AWAL (void);void PUSH(void);
void AWAL(void){ Top = -1;void PUSH(void);
void POP(void);define n 10int S[n];
Top = -1;}
void PUSH (void){ int Top, X;
void main( ){ AWAL( );
{ Top = Top + 1;S[top] = X;
}{ AWAL( );---
f(“%i” &X)
void POP (void){ X = S[top];
Top = Top - 1;}scanf(“%i”, &X);
PUSH();--
}
S m i b l b if t-POP( );printf(“%i”, X);
Semua variabel bersifatGLOBAL
47
--
}
Ilustrasi Stack.
n-1
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
Top X
3Top
Diilustrasikan sebagai berikut :g
0 1 2 3 4 5 6 7 8 9
n-1
Top
X X X XS[ ]
48
Top
1.2.4 Kondisi Stack.
a. KOSONG
b. PENUH
c. BISA DIISI
d. ADA ISINYA
49
Kondisi Stack.
a KOSONGa. KOSONG
b. PENUH
a ya
c. BISA DIISIawan
nya
lawa
nny
d. ADA ISINYA
l
50
Kondisi Stack.
Kondisi Stack :n-1
a. KOSONG
b. PENUH
0 1 2 3 4 5 6 7 8 9 n 1
1
c. BISA DIISI
d. ADA ISINYA
Top
d. ADA ISINYA
X X X X20 1 2 3 4 5 6 7 8 9
n-1
Top
X X X X X X X X X X30 1 2 3 4 5 6 7 8 9
n-1
51Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONGG b ?
0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH
Gambar : ?
?
Top
c. BISA DIISI
Gambar : ?
?X X X X20 1 2 3 4 5 6 7 8 9
n-1
d ADA ISINYA
Gambar : ?Top
d. ADA ISINYAGambar : ?
X X X X X X X X X X30 1 2 3 4 5 6 7 8 9
n-1
52Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONG1
0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH
Gambar :
?
1Top
c. BISA DIISI
Gambar : ?
?X X X X20 1 2 3 4 5 6 7 8 9
n-1
d ADA ISINYA
Gambar : ?Top
d. ADA ISINYAGambar : ?
X X X X X X X X X X30 1 2 3 4 5 6 7 8 9
n-1
53Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONG1
0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH
Gambar : 1
3
Top
c. BISA DIISI
Gambar :
?
3
X X X X20 1 2 3 4 5 6 7 8 9
n-1
d ADA ISINYA
Gambar : ?Top
d. ADA ISINYAGambar : ?
X X X X X X X X X X30 1 2 3 4 5 6 7 8 9
n-1
54Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONG1
0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH
Gambar : 1
3
Top
c. BISA DIISI
Gambar : 3
X X X X20 1 2 3 4 5 6 7 8 9
n-1
d ADA ISINYA
Gambar : 1 2Top
d. ADA ISINYAGambar : ?
X X X X X X X X X X30 1 2 3 4 5 6 7 8 9
n-1
55Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONG1
0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH
Gambar : 1
3
Top
c. BISA DIISI
Gambar : 3
X X X X20 1 2 3 4 5 6 7 8 9
n-1
d ADA ISINYA
Gambar : 1 2Top
d. ADA ISINYAGambar : 2 3
X X X X X X X X X X30 1 2 3 4 5 6 7 8 9
n-1
56Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONG : ?1
cirinya0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH : ?
1Top
0 1 2 3 4 5 6 7 8 9 n-1
c. BISA DIISI : ?
3
Top
X X X X2
d ADA ISINYA : ?
1 2Top
0 1 2 3 4 5 6 7 8 9 n-1
d. ADA ISINYA : ?2 3
Top
X X X X X X X X X X3
57
Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONG : Top = -11
cirinya0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH : ?
1Top
0 1 2 3 4 5 6 7 8 9 n-1
c. BISA DIISI : ?
3
Top
X X X X2
d ADA ISINYA : ?
1 2Top
0 1 2 3 4 5 6 7 8 9 n-1
d. ADA ISINYA : ?2 3
Top
X X X X X X X X X X3
58
Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONG : Top = -11
cirinya0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH : Top = n-1
1Top
0 1 2 3 4 5 6 7 8 9 n-1
c. BISA DIISI : ?
3
Top
X X X X2
d ADA ISINYA : ?
1 2Top
0 1 2 3 4 5 6 7 8 9 n-1
d. ADA ISINYA : ?2 3
Top
X X X X X X X X X X3
59
Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONG : Top = -11
cirinya0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH : Top = n-1
1Top
0 1 2 3 4 5 6 7 8 9 n-1
c. BISA DIISI : Top < n-1
3
Top
X X X X2
d ADA ISINYA : ?
1 2Top
0 1 2 3 4 5 6 7 8 9 n-1
d. ADA ISINYA : ?2 3
Top
X X X X X X X X X X3
60
Top
Kondisi Stack.
Kondis Stack :n-1
a. KOSONG : Top = -11
cirinya0 1 2 3 4 5 6 7 8 9 n 1
1
b. PENUH : Top = n-1
1Top
0 1 2 3 4 5 6 7 8 9 n-1
c. BISA DIISI : Top < n-1
3
Top
X X X X2
d ADA ISINYA : Top > 1
1 2Top
0 1 2 3 4 5 6 7 8 9 n-1
d. ADA ISINYA : Top > -12 3
Top
X X X X X X X X X X3
61
Top
Kondisi Stack.
n-10 1 2 3 4 5 6 7 8 9
n 1
X X X X
Top
Kondis Stack :
a. KOSONG
cirinya
Top = -1
b. PENUH
Top = 1
Top = n-1
c. BISA DIISI
d. ADA ISINYA
Top < n-1
Top > -1
62
d. ADA ISINYA Top > 1
Kondisi Stack c i r i Ilustrasi gambar
1.2.4 Kondisi Stack.
Kondisi Stack (posisi Top) Ilustrasi gambar
a.b.
KOSONG tak ada isinyaPENUH tak bisa diisi lagi
Top = -1Top = n-1
Gambar 1Gambar 3
c.d.
BISA DIISI (kebalikan dari PENUH)ADA ISINYA (kebalikan dari KOSONG)
Top < n-1Top > -1
Gambar 1 dan 2Gambar 2 dan 3
n-1
10 1 2 3 4 5 6 7 8 9
n-1
X X X XTop
20 1 2 3 4 5 6 7 8 9
Top
X X X X X X X X X X30 1 2 3 4 5 6 7 8 9
n-1
63Top
1.2.5 Algoritma PUSH dan POP yang lengkap.
64
a. Algoritma yang lengkap untuk proses PUSH
Bila ada instruksi PUSH0 1 2 3 4 5 6 7 8 9
n-1
Bila ada instruksi PUSHmaka akan d isi di elemennomor : ?
Top
X X X X
Top
65
a. Algoritma yang lengkap untuk proses PUSH
Bila ada instruksi PUSH0 1 2 3 4 5 6 7 8 9
n-1
Bila ada instruksi PUSHmaka akan d isi di elemennomor : ?
Top
X X X X
Top
n-1Bila ada instruksi PUSHmaka akan d isi di elemennomor : 4
X X X X
0 1 2 3 4 5 6 7 8 9
Top
66
a. Algoritma yang lengkap untuk proses PUSH
Bila ada instruksi PUSH0 1 2 3 4 5 6 7 8 9
n-1
Bila ada instruksi PUSHmaka akan diisi di elemennomor : 4
Top
X X X X
Top
n-1
Dalam kondisi PENUHBolehkah melakukan PUSH ?X X X X X X X X X X
0 1 2 3 4 5 6 7 8 9
Jawab : ?Top
67
a. Algoritma yang lengkap untuk proses PUSH
Bila ada instruksi PUSH0 1 2 3 4 5 6 7 8 9
n-1
Bila ada instruksi PUSHmaka akan d isi di elemennomor : 4
Top
X X X X
Top
n-1
Dalam kondisi PENUHBolehkah melakukan PUSH ?X X X X X X X X X X
0 1 2 3 4 5 6 7 8 9
Jawab : TIDAK BOLEHTop
68
a. Algoritma yang lengkap untuk proses PUSH
Ilustrasi Stack
0 1 2 3 4 5 6 7 8 9
n-1
Top
X X X X
Bila Stack PENUH, maka Tidak Boleh melakukan PUSHsehingga sebelum PUSH
Top
sehingga, sebelum PUSH,perlu dioeriksa apakah Stack dalam keadaan :
a. apakah KOSONGpb. apakah PENUHc. apakah BISA DIISId k h ADA ISINYA
?
69
d. apakah ADA ISINYA
a. Algoritma yang lengkap untuk proses PUSH
Ilustrasi Stack
0 1 2 3 4 5 6 7 8 9
n-1
Top
X X X X
Bila BISA DIISI silahkan PUSH
b l k ( l ) jangan PUSH
Top
sebaliknya (else) 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 = Top + 1;{ p p ;S[Top] = X;
}elseprintf( “Stack Penuh”);
}
71
a. Algoritma yang lengkap untuk proses PUSH
void PUSH(void){ if ( Top < n-1 )
{ Top = Top + 1;
Bila BISA DIISI
lakukan PUSH{ p p ;S[Top] = X;
}else
lakukan PUSH
printf( “Stack Penuh”);}
void PUSH(void){ if ( Top == n-1 )
printf( “Stack Penuh”);
atau Bila PENUH
j PUSHprintf( Stack Penuh );else
{ Top = Top + 1;S[Top] = X;
jangan PUSH
elselakukan PUSH
72
}}
u H
b. Algoritma yang lengkap untuk proses POP
void POP(void)void POP(void){if (Top > -1 ){ X = S[Top];
Bila ADA ISINYA
lakukan POPX S[Top];Top = Top-1;
}elseprintf(“Stack Kosong”);printf( Stack Kosong );
}
Algoritma yang lengkap untuk proses POP dengan ‘logika terbalik’atau :
void POP(void){if ( Top == -1 )
printf(“Stack Kosong”);Bila KOSONG
jangan POPprintf( Stack Kosong );else{ X = S[Top];Top = Top - 1;
jangan POP
elselakukan POP
73
Top = Top 1;}
}
lakukan POP
1.2.6 Contoh Soal PUSH dan POP .
Baca sendiri di diktat
74
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 POSTFIX1.3.2.
INFIX POSTFIXA + 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.
75
call suatu function.
1.4 Pointer sebagai penunjuk Stack.
a. Menyiapkan Stack dan Pointer :n-1
0 1 2 3 4 5 6 7 8 9 10
BatasAtasTop
Dasar
define n 11-int S[n], *Top, *BatasAtas, *Dasar--Dasar = &S[-1];Top = &S[-1];
76
p [ ];BatasAtas = &S[n-1];
n0 1 2 3 4 5 6 7 8 9 10
BatasAtasTop
Dasar
a. Algoritma untuk PUSHif(Top < BatasAtas)if(Top < BatasAtas)
Top++; *Top = X;
elseprintf(“Stack Penuh);
b. Algoritma untuk POPif(Top > Dasar)
X = *Top;Top--;
l
77
elseprintf(“Stack Penuh);
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 S[MAXSTACK]; dibuat 10 elemenyp [ ];
} StackType; S[0] sampai dengan S[9]
b Initialisasib. Initialisasi.
void Intitialize(StackType *P ){ P->Top = -1; }
78
1.5 Representasi Stack menggunakan structure.Perhatikan contoh berikut ini :
c. Proses PUSH.
d P H( k *P)void PUSH(ItemType item, StackType *P){ if(P->Top >= MAXSTACK-1)
printf(“Stack Penuh”);elseelse
P->entry[++P->Top] = item;
d. Proses POP.
void POP(ItemType *Q, StackType *P)yp yp{ if(P->Top <= -1)
printf(“Stack Kosong”);else
*Q P S[P T ]79
*Q = P->S[P->Top--];}
X X X X
0 1 2 3 4 5 6 n-1 1.6 Soal Latihan Mandiri.
Top
Soal-I. Untuk Stack yang diilustrasikan pada Gambar diatas :. Un u y ng u n p G m
a. Kosongb. Penuh
1. Sebutkan ciri bahwa Stack :
2. Tulis algoritma dasar untuk:c. Bisa diisid. Ada isinya
a. PUSHb. POP
3. Tulis algoritma yang lengkap untuk: a. PUSHg y g g pb. POP
4. Tulis program (penggalan program) untuk menginput data melaluikeyboard satu persatu dan mem Push data tersebut ke Stack
5. Tulis program (penggalan program) untuk mengeluarkan (POP) isi Stack satu per satu dan mencetaknya sampai Stack menjadi
y p m msampai Stack penuh tak bisa diisi lagi.
80
Stack satu per satu dan mencetaknya, sampai Stack menjadi kosong.
6. Bila Stack berisi bilangan integer, maka susun algoritma untukmenghitung dan mencetak total isi Stack tanpa menghapus isiStack.
7. Dianggap tempat yang tersedia mesih lebih dari 10 tempat. Tulisprogram (penggalan program) untuk menginput sebanyak 10 buahdata melalui keyboard satu persatu dan mem Push data tersebut keStack
8. Dipastikan stack terisi lebih dari 10 elemen. Tulis program(penggalan program) untuk mengeluarkan (POP) isi stack sebanyak 10elemen satu per satu dan mencetaknya ke layar
Stack.
elemen, satu per satu dan mencetaknya ke layar.
81
6 Bila Stack berisi bilangan integer, maka susun6. g g ,algoritma untuk menghitung dan mencetak totalisi Stack tanpa menghapus isi Stack.
82
6 Bila Stack berisi bilangan integer, maka susun6. g g ,algoritma untuk menghitung dan mencetak totalisi Stack tanpa menghapus isi Stack.
83
6 Bila Stack berisi bilangan integer, maka susun6. g g ,algoritma untuk menghitung dan mencetak totalisi Stack tanpa menghapus isi Stack.
25 12 17 10S[ ]0 1 2 3 4 5 6 7 8 9
n-1
T X
3Top
S[ ]
64
Top X Total
84
7. Dianggap tempat yang tersedia mesih lebih dari 10t t T li ( l ) t ktempat. Tulis program (penggalan program) untukmenginput sebanyak 10 buah data melalui keyboardsatu persatu dan mem Push data tersebut ke Stack.
85
7. Dianggap tempat yang tersedia mesih lebih dari 10t t T li ( l ) t ktempat. Tulis program (penggalan program) untukmenginput sebanyak 10 buah data melalui keyboardsatu persatu dan mem Push data tersebut ke Stack.
86
7. Dianggap tempat yang tersedia mesih lebih dari 10t t T li ( l ) t ktempat. Tulis program (penggalan program) untukmenginput sebanyak 10 buah data melalui keyboardsatu persatu dan mem Push data tersebut ke Stack.
0 1 2 3 4 5 6 n-1
X X X X
Top
X X X X
3
Top X
3
87
8. Dipastikan stack terisi lebih dari 10 elemen. Tulisprogram (penggalan program) untuk mengeluarkan(POP) isi stack sebanyak 10 elemen, satu per satudan mencetaknya ke layar.y y
88
8. Dipastikan stack terisi lebih dari 10 elemen. Tulisprogram (penggalan program) untuk mengeluarkan(POP) isi stack sebanyak 10 elemen, satu per satudan mencetaknya ke layar.y y
89
8. Dipastikan stack terisi lebih dari 10 elemen. Tulisprogram (penggalan program) untuk mengeluarkan(POP) isi stack sebanyak 10 elemen, satu per satudan mencetaknya ke layar.y 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
X X X X X X X X X X X X X X X
14
Top X
14
90
9. Tulis program (penggalan program) untuk menginput melalui keyboardsatu persatu dan mem Push data tersebut ke Stack. Bila tempat yangtersedia masih cukup untuk menampung 10 data baru maka data yangtersedia masih cukup untuk menampung 10 data baru, maka data yangdiinput dan di push sebanyak 10 buah data. Tapi bila tempat yangtersedia kurang dari 10 tempat, maka cukup menginput dan mem Pushsebanyak tempat yang tersedia, sampai stack penuh.
10. Tulis program (penggalan program) untuk mengeluarkan (POP) isi10. Tulis program (penggalan program) untuk mengeluarkan (POP) isistack satu persatu dan mencetaknya ke layar. Bila stack berisi 10elemen atau lebih dari 10 elemen, maka keluarkan dan cetaksebanyak 10 elemen. Tapi bila isi stack kurang dari 10 elemen, makak lu k n s mu isi st ck s mp i st ck m nj di k s nkeluarkan semua isi stack, sampai stack menjadi kosong.
91
9. Tulis program (penggalan program) untuk menginputmelalui keyboard satu persatu dan mem Push datamelalui keyboard satu persatu dan mem Push datatersebut ke Stack. Bila tempat yang tersedia masihcukup untuk menampung 10 data baru, maka datayang diinput dan di push sebanyak 10 buah data Tapiyang diinput dan di push sebanyak 10 buah data. Tapibila tempat yang tersedia kurang dari 10 tempat,maka cukup menginput dan mem Push sebanyaktempat yang tersedia, sampai stack penuh.
92
9. Tulis program (penggalan program) untuk menginputmelalui keyboard satu persatu dan mem Push datamelalui keyboard satu persatu dan mem Push datatersebut ke Stack. Bila tempat yang tersedia masihcukup untuk menampung 10 data baru, maka datayang diinput dan di push sebanyak 10 buah data Tapiyang diinput dan di push sebanyak 10 buah data. Tapibila tempat yang tersedia kurang dari 10 tempat,maka cukup menginput dan mem Push sebanyaktempat yang tersedia, sampai stack penuh.
93
9. Tulis program (penggalan program) untuk menginputmelalui keyboard satu persatu dan mem Push datamelalui keyboard satu persatu dan mem Push datatersebut ke Stack. Bila tempat yang tersedia masihcukup untuk menampung 10 data baru, maka datayang diinput dan di push sebanyak 10 buah data Tapiyang diinput dan di push sebanyak 10 buah data. Tapibila tempat yang tersedia kurang dari 10 tempat,maka cukup menginput dan mem Push sebanyaktempat yang tersedia, sampai stack penuh.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1 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
Top X
14
94
p
9. Tulis program (penggalan program) untuk menginputmelalui keyboard satu persatu dan mem Push datamelalui keyboard satu persatu dan mem Push datatersebut ke Stack. Bila tempat yang tersedia masihcukup untuk menampung 10 data baru, maka datayang diinput dan di push sebanyak 10 buah data Tapiyang diinput dan di push sebanyak 10 buah data. Tapibila tempat yang tersedia kurang dari 10 tempat,maka cukup menginput dan mem Push sebanyaktempat yang tersedia, sampai stack penuh.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1 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
Top
Top X
7
95
p
10.Tulis program (penggalan program) untukmengeluarkan (POP) isi stack satu persatu danmengeluarkan (POP) isi stack satu persatu danmencetaknya ke layar. Bila stack berisi 10 elemenatau lebih dari 10 elemen, maka keluarkan dan cetaksebanyak 10 elemen Tapi bila isi stack kurang darisebanyak 10 elemen. Tapi bila isi stack kurang dari10 elemen, maka keluarkan semua isi stack, sampaistack menjadi kosong.
96
10.Tulis program (penggalan program) untukmengeluarkan (POP) isi stack satu persatu danmengeluarkan (POP) isi stack satu persatu danmencetaknya ke layar. Bila stack berisi 10 elemenatau lebih dari 10 elemen, maka keluarkan dan cetaksebanyak 10 elemen Tapi bila isi stack kurang darisebanyak 10 elemen. Tapi bila isi stack kurang dari10 elemen, maka keluarkan semua isi stack, sampaistack menjadi kosong.
97
10.Tulis program (penggalan program) untukmengeluarkan (POP) isi stack satu persatu danmengeluarkan (POP) isi stack satu persatu danmencetaknya ke layar. Bila stack berisi 10 elemenatau lebih dari 10 elemen, maka keluarkan dan cetaksebanyak 10 elemen Tapi bila isi stack kurang darisebanyak 10 elemen. Tapi bila isi stack kurang dari10 elemen, maka keluarkan semua isi stack, sampaistack menjadi kosong.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1 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
Top
Top X
7
98
p
10.Tulis program (penggalan program) untukmengeluarkan (POP) isi stack satu persatu danmengeluarkan (POP) isi stack satu persatu danmencetaknya ke layar. Bila stack berisi 10 elemenatau lebih dari 10 elemen, maka keluarkan dan cetaksebanyak 10 elemen Tapi bila isi stack kurang darisebanyak 10 elemen. Tapi bila isi stack kurang dari10 elemen, maka keluarkan semua isi stack, sampaistack menjadi kosong.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 n-1 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
Top X
14
99
p
100
Sudah ada sebuah stack yang dibuat dengan1int S[n], dengan variabel Top bertipe intsebagai penunjuk posisi isi stack yang ‘palingatas’ Tidak diketahui apakah stack tersebutatas’. Tidak diketahui apakah stack tersebutdalam keadaan kosong, penuh, bisa diisi, atauada isinya.yTulis program (penggalan program) untukmenginput data melalui keyboard satu persatud P h d t t b t k St k (bildan mem Push data tersebut ke Stack (bilastack tersebut bisa diisi) sampai Stack penuhtak bisa diisi lagi.
101
tak bisa diisi lagi.
Sudah ada sebuah stack yang dibuat dengan2int S[n], dengan variabel Top bertipe intsebagai penunjuk posisi isi stack yang ‘palingatas’. Tidak diketahui apakah stack tersebutatas . Tidak diketahui apakah stack tersebutdalam keadaan kosong, penuh, bisa diisi, atauada isinya.Tulis program (penggalan program) untukTulis program (penggalan program) untukmengeluarkan isi stack tersebut (bila adaisinya), dan mencetaknya ke layar monitor, satupersatu sampai stack tersebut kosong.
102
3 Sudah ada dua buahstack S1 dan S2 yang 7 7stack S1, dan S2, yangdibuat dengan int S1[n]dan S2[n]. Stack S1 sudahada isinya, dan stack S2,
175
33253
4567
Top1
3
4567
ada isinya, dan stack S2,belum ada isinya, yangdiilustrasikan dengangambar disebelah kanan
1215270
123
-1 S10123
-1 S2Top2
ini.
Susun program (penggalan) t kprogram) untuk
mengeluarkan isi stackS1, dan memindahkanisinya ke stack S2 4
567
2715124
567
Top2
isinya ke stack S2,sehingga stack S1menjadi kosong, denganilustrasi seperti gambar 0
123 25
335
170123
103
ilustrasi seperti gambardisebelah kanan ini.
-1 S1Top1 -1 S2
4Sudah ada tiga buah stack S1 S2 7 7 7Sudah ada tiga buah stack S1,S2dan S3, yang dibuat dengan intS1[n], S2[n] dan S3[n]. Stack S1sudah ada isinya, dan stack S2
175
33253
4567
Top1
3
4567
3
4567
sudah ada isinya, dan stack S2dan S3, belum ada isinya, yangdiilustrasikan dengan gambardisebelah kanan ini.
1215270
123
-1 S10123
-1 S2Top20123
-1 S3Top3
Susun program (penggalan) t k l k i iprogram) untuk mengeluarkan isi
stack S1, dan memindahkanisinya ke stack S2, sehinggastack S1 menjadi kosong 4
567
175
334567
Top2
4567
stack S1 menjadi kosong,dengan ilustrasi seperti gambardisebelah kanan ini. Stack S3dapat digunakan bilamana 0
123
33251215270
123
0123
1 S3
104
dapat digunakan bilamanadiperlukan
-1 S1Top1 -1 S2-1 S3Top3
5 Sudah ada tiga buah stackS1,S2 dan S3, yang dibuat 7 7 7, , y gdengan int S1[n], S2[n] danS3[n]. Stack S1 sudah adaisinya, dan stack S2 dan S3,
175
33253
4567
Top1
3
4567
3
4567
belum ada isinya, yangdiilustrasikan dengan gambardisebelah kanan ini.
1215270
123
-1 S10123
-1 S2Top20123
-1 S3Top3
Susun program (penggalanprogram) untuk mengeluarkan isi
k S1 d i d hkstack S1, dan memindahkanisinya ke stack S2, sehinggastack S1 menjadi kosong, danisi stack S2 urut menaik dengan 4
567
3327254
567
Top2
4567
isi stack S2 urut menaik denganilustrasi seperti gambardisebelah kanan ini. Stack S3dapat digunakan bilamana 0
123
2517151250
123
0123
1 S3
105
dapat digunakan bilamanadiperlukan
-1 S1Top1 -1 S2-1 S3Top3