Definisi Stack
TOP
BOTTOM
4
Kamus :
Algoritma
(TOP(S) = Nil)
8
Pembuatan Stack Kosong
9
Penambahan sebuah elemen
pada Stack (Push)
Procedure Push@(Input/Output S : Stack
Input P : address)
{Menambahkan sebuah elemen baru pada TOP,
dengan elemen yang telah diketahui alamatnya}
Kamus
Algoritma
{insert sebagai elemen pertama}
Next (P) TOP(S)
TOP(S) P
10
Penambahan sebuah elemen
pada Stack (Push)
Procedure Push (Input/Output S : Stack Input E : Infotype)
{Menambahkan sebuah elemen baru pada TOP, dengan elemen
yang diketahui informasinya}
Kamus
P: address
Algoritma
Alokasi (P) {alokasi selalu berhasil}
Info(P) E
Next (P) TOP(S)
TOP(S) P
11
Penghapusan sebuah elemen pada
Stack
Procedure PopStack@ (Input/Output S : Stack; Output P : address)
{I.S : stack tidak kosong}
{F.S : alamt elemen TOP disimpan pada P, sehingga informasinya
dapat diakses melaui P}
{Menghapus elemen stack, stack tidak boleh kosong dan mungkin
seteleh penghapusan stack menjadi kosong}
Kamus
P :address
Algoritma
P TOP(S)
TOP(S) Next (TOP(S))
12
Penghapusan sebuah elemen pada
Stack
Procedure PopStack (Input/Output S : Stack;
Output E : Infotype)
{I.S : stack tidak kosong}
{F.S : info elemen TOP disimpan pada E, alamat Top yang lama
didealokasi}
{Menghapus elemen stack, stack tidak boleh kosong dan mungkin
setelah penghapusan stack menjadi kosong}
Kamus
P : address
Algoritma
P TOP(S); E Info(P)
TOP(S) Next (TOP(S))
Dealokasi (P) 13
Representasi Berkait dengan
Pointer
KAMUS
{Definisi sebuah stack S dgn representasi berkait dgn
pointer}
type infotype : ...{Type terdefinisi, menyimpan informasi
elemen stack}
type address : ^ElmtStack
type Elmtstack : <Info : infotype, Next : address>
type Stack : <Top : address>
S : Stack
{Cara penulisan Top(S) ditulis S.Top
Info(P) ditulis P^.Info
Next(P) ditulis P^.Next }
14
Test stack Kosong
Kamus :
Algoritma
(S.TOP = Nil)
15
Pembuatan Stack Kosong
Algoritma :
S.TOP Nil
16
Penambahan sebuah elemen
pada Stack (Push)
Procedure Push@(Input/Output S : Stack
Input P : address)
{Menambahkan sebuah elemen baru pada TOP,
dengan elemen yang telah diketahui alamatnya}
Kamus
Algoritma
{insert sebagai elemen pertama}
P^.Next S.TOP
S.TOP P
17
Penghapusan sebuah elemen pada
Stack
Procedure PopStack@ (Input/Output S : Stack; Output P : address)
{I.S : stack tidak kosong}
{F.S : alamt elemen TOP disimpan pada P, sehingga informasinya
dapat diakses melaui P}
{Menghapus elemen stack, stack tidak boleh kosong dan mungkin
seteleh penghapusan stack menjadi kosong}
Kamus
P :address
Algoritma
P S.TOP
S.TOP S.TOP^.Next
18
Representasi berkait dengan tabel
Kamus
{Definisi sebuah stack S dengan representasi berkait}
constant Nil : integer = 0
Nmin : integer = 1
Nmax : integer = 100
type address : integer [Nmin..Nmax, Nil]
type infotype : ...{terdefinisi}
type ElmtS : <Info:infotype, next : address>
type Stack : <TOP : address, TabElmt: array[Nmin..Nmax] of ElmtS>
S:Stack
{cara penulisan : Top(S) dituliskan S.Top
Info(P) dituliskan S.TabElmt[P].Info
Next(P) dituliskan S.TabElmt[P].Next
Primitif Alokasi : AllocTab(P)
Dealokasi : DeallocTab(p) }
19
Test stack Kosong
Function StackEmptyT (S: STACK) boolean
{Test stack kosong : mengirim true jika tumpukan
kosong, false jika tumpukan tidak kosong}
Kamus :
Algoritma
→ S.Top = Nil
20
Pembuatan Stack Kosong
21
Penambahan sebuah elemen
pada Stack (Push)
Procedure Push@(Input/Output S : Stack
Input P : address)
{Menambahkan sebuah elemen baru pada TOP, dengan elemen
yang telah diketahui alamatnya}
Kamus
Algoritma
{insert sebagai elemen pertama}
S.TabElmt[P].Next←S.TOP
S.TOP ← P
22
Penghapusan sebuah elemen pada
Stack
Procedure PopStack@ (Input/Output S : Stack;
Output P : address)
{I.S : stack tidak kosong}
{F.S : alamat elemen TOP disimpan pada P, sehingga informasinya
dapat diakses melaui P}
{Menghapus elemen stack, stack tidak boleh kosong dan mungkin
seteleh penghapusan stack menjadi kosong}
Kamus
P :address
Algoritma
P ← S.TOP
S.TOP ← S.TabElmt[S.TOP].Next
{Jika menjadi kosong, S.TOP = Nil}
23
24
Representasi kontigu
• Karena kemudahan
operasinya, biasanya stack 1 23.00
lebih banyak
direpresentasikan sebagai 2 12.5
tabel kontigu, dengan TOP 3 0.00
adalah salah satu nilai
ekstrem indeks terdefinisi. TOP 4 34.8
• Stack direpresentasikan
oleh sebuah tabel {1..Nmax}
dengan NMax adalah NMax
kostanta yang diperkirakan
sebagai jumlah maksimum
elemen yang ditampung
stack.
Kamus :
{Definisi sebuah stack S dengan representasi kontigu}
constant Nil : integer = 0
Nmax : integer = 100
type address : integer [0..Nmax]
type ElmtS : ...{terdefinisi, terdiri dari Info saja}
type Stack : <TOP : address, TabElmt: array[1..Nmax] of
ElmtS>
S:Stack
{cara penulisan : Top(S) dituliskan S.Top
Info(P) dituliskan S.TabElmt[P]
Next(P) dituliskan P←P-1
Primitif Alokasi : AllocTab(P)
Dealokasi : DeallocTab(P) }
25
Test stack Kosong
Kamus :
Algoritma
→ S.Top = Nil
26
Pembuatan Stack Kosong
27
Penambahan sebuah elemen
pada Stack (Push)
28
Penghapusan sebuah elemen pada
Stack
procedure PopStack (input/output S: Stack,
output E : ElmtS)
{menghapus elemen Stack, Stack tidak boleh kosong dan
mungkin menjadi kosong}
{IS : Stack tidak kosong
FS : elemen TOP disimpan pada E}
Kamus
Algoritma :
E←S.TabElmt[S.TOP]
S.TOP ← S.TOP - 1
{tidak perlu dealokasi sebab direpresentasi dengan tabel
kontigu}
29
30
Kamus
type infotype : character
type address : ^ElmtStack
type Elmtstack : <Info : infotype, Next : address>
type Stack : <Top : address>
S : Stack
CT,OP1,OP2 : character
Type token : ……… {terdefinisi}
Procedure first-token {mengirim token yang pertama}
32
Studi Kasus Stack
Procedure Next-token {mengirim token yang
berikutnya}
Function EndToken boolean {true jika proses
akuisisi mendapatkan Token kosong. Merupakan
akhir ekpresi. Model dengan mark}
Function operator (CT : token) token
Function hitung (OP1,OP2, operator : token)
token
{menghitung ekspresi, mengkonversi menjadi
token}
33
Studi Kasus Stack
Algoritma
First-token
If (end-token) then
Otuput (‘ekspresi kosong’)
Else
Repeat
Depend on (CT) {CT adalah current token}
Not operator (CT): push(CT,S)
Operator (CT): {CT adalah operator}
Pop(S,OP2)
Pop(S,OP1)
Push(S,hitung(OP1,OP2,CT))
Next-Token(CT)
Until (End-token)
{tuliskan hasil}
34