Pertemuan 7 - Stack
Pertemuan 7 - Stack
ALGORITMAdanSTRUKTURDATAII STACK
V3/20092010 1
Pertemuan7
Waktu :135menit
TujuanPembelajaran :Mahasiswamampumenjelaskanteknikpemrograman
menggunakanStack.
SubstansiMateri :Stack
TabulasiKegiatanPerkuliahan
No
Tahap
Kegiatan
KegiatanPengajar
Kegiatan
Mahasiswa
Media&
Alat
Waktu
1 Pendahuluan 1. Membukapertemuan
2. Mengulangmateripertemuan
sebelumnya
Menyimak
Bertanya
PapanTulis 20
Menit
2 Penyajian
Materi
1. Pengertianstack
2. Jenisjenisstack
3. StackdenganArray
Menyimak
Bertanya
Menjawab
Pertanyaan
PapanTulis 80
Menit
3 Penutup 1. Menyimpulkanmateri
pertemuan
2. Memberikantugaskecil
3. Menutuppertemuan
Menyimak Papantulis 35
Menit
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.
MATERIKULIAH
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII STACK
V3/20092010 2
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;
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII STACK
V3/20092010 3
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;
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII STACK
V3/20092010 4
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;
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII STACK
V3/20092010 5
End;
Full:Fungsiuntukmemeriksaapakahstackyangadasudahpenuh
FunctionFull:Boolean;
Begin
Full:=False;
Iftop[1]+1>=top[2]thenFull:=True;
End;
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII STACK
V3/20092010 6
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;
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII STACK
V3/20092010 7
Clear:Mengosongkanstack(Jikatop=0,makastackdianggapkosong)
ProcedureClear(NoStack:Byte);
Begin
CaseNoStackOf
1:Top[1]:=0;
2:Top[2]:=Max+1;
End;
End;