Pertemuan 07 - Stack
Pertemuan 07 - Stack
ALGORITMAdanSTRUKTURDATAII
STACK
Pertemuan7
Waktu
:135menit
TujuanPembelajaran
:Mahasiswamampumenjelaskanteknikpemrograman
menggunakanStack.
:Stack
SubstansiMateri
TabulasiKegiatanPerkuliahan
No
1
2
Tahap
KegiatanPengajar
Kegiatan
Pendahuluan 1. Membukapertemuan
2. Mengulangmateripertemuan
sebelumnya
Penyajian
1. Pengertianstack
Materi
2. Jenisjenisstack
3. StackdenganArray
Penutup
1. Menyimpulkanmateri
pertemuan
2. Memberikantugaskecil
3. Menutuppertemuan
Kegiatan
Media&
Waktu
Mahasiswa
Alat
Menyimak
PapanTulis 20
Bertanya
Menit
Menyimak
Bertanya
Menjawab
Pertanyaan
Menyimak
PapanTulis 80
Menit
Papantulis
35
Menit
MATERIKULIAH
STACK
Stack adalah suatu tumpukan. Konsep utama dari stack adalah LIFO (Last In First Out),
yaitu benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang
dikeluarkan dari tumpukan. Dalam pascal ada dua cara penerapan stack, yaitu dengan
arraydanlinkedlist.
V3/20092010 1
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
STACK
SingleStackdenganArray
Sesuai dengan sifat stack, maka pengambilan/penghapusan elemen dalam stack harus
dimulai dari elemen teratas. Deklarasi konstanta, tipe, dan variable yang akan dipakai
dalampenjelasanoperasioperasistackdenganarrayadalah:
Const
Max={jumlahtumpukan}
Type
TipeData={ };
Stack=array[1..Max]ofTipeData;
Var
Top:TipeData;
OperasioperasipadaSingleStackdenganArray
Create:Membuatstackbaruyangmasihkosong
ProcedureCreate;
Begin
Top:=0;
End;
Full:Fungsiuntukmemeriksaapakahstackyangadasudahpenuh
FunctionFull:Boolean;
Begin
Full:=False;
Iftop=maxthenFull:=True;
End;
V3/20092010 2
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
STACK
Push:Menambahkansebuahelemenelemenkedalamstack.Tidakbisadilakukan
lagijikastacksudahpenuh.
ProcedurePush(elemen:TipeData);
Begin
IfnotFullthen
Begin
Top:=Top+1;{atauInc(Top)}
Stack[Top]:=elemen;
End;
End;
Empty:Fungsiuntukmenentukanapakahstackkosongatautidak.
FunctionEmpty:Boolean;
Begin
Empty:=False;
IfTop=0thenEmpty:=True;
End;
Pop:Mengambilelementeratasdaristack.Stacktidakbolehkosong.
ProcedurePop(elemen:TipeData);
Begin
IfnotEmptythen
Begin
Elemen:=stack[Top];
Top:=Top1;{atauDec(Top)}
End;
End;
V3/20092010 3
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
STACK
Clear:Mengosongkanstack(Jikatop=0,makastackdianggapkosong)
ProcedureClear;
Begin
Top:=0;
End;
DoubleStackdenganArray
Merupakan teknik yang dikembangkan untuk menghemat pemakaian memory dalam
pembuatan dua stack dengan array. Intinya adalah menggunakan sebuah array untuk
menampungduastack.
Contoh deklarasi konstanta, tipe, dan variable yang akan dipakai dalam operasioperasi
doublestackarray.
Const
Max={jumlahtumpukan}
Type
TipeData={ };
Stack=array[1..Max]ofByte;
Var
Top:array[1..2]ofByte;
OperasioperasipadaDoubleStackdenganArray
Create:Membuatstackbaruyangmasihkosong
ProcedureCreate;
Begin
Top[1]:=0;
Top[2]:=max+1;
V3/20092010 4
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
STACK
End;
Full:Fungsiuntukmemeriksaapakahstackyangadasudahpenuh
FunctionFull:Boolean;
Begin
Full:=False;
Iftop[1]+1>=top[2]thenFull:=True;
End;
Push:Menambahkansebuahelemenelemenkedalamstack.Tidakbisadilakukan
lagijikastacksudahpenuh.
ProcedurePush(elemen:TipeData;NoStack:Byte);
Begin
IfnotFullthen
Begin
CaseNoStackof
1:Top[1]:=Top[1]+1;
2:Top[2]:=Top[2]1;
Stack[Top[NoStack]]:=elemen;
End;
End;
V3/20092010 5
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
STACK
Empty:Fungsiuntukmenentukanapakahstackkosongatautidak.
FunctionEmpty(NoStack:Byte):Boolean;
Begin
Empty:=False;
CaseNoStackof
1:ifTop[1]=0then
Empty:=True;
2:ifTop[2]=Max+1then
Empty:=True;
End;
End;
Pop:Mengambilelementeratasdaristack.Stacktidakbolehkosong.
ProcedurePop(varelemen:TipeData;NoStack:Byte);
Begin
IfnotEmpty(NoStack)then
Begin
Elemen:=stack[Top[NoStack]];
CaseNoStackof
1:Top[1]:=Top[1]1;
2:Top[2]:=Top[2]+1;
End;
End;
End;
V3/20092010 6
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
STACK
Clear:Mengosongkanstack(Jikatop=0,makastackdianggapkosong)
ProcedureClear(NoStack:Byte);
Begin
CaseNoStackOf
1:Top[1]:=0;
2:Top[2]:=Max+1;
End;
End;
V3/20092010 7