Anda di halaman 1dari 7

DIKTATKULIAH

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

Push : Menambahkan sebuah elemenelemen ke dalam stack. Tidak bisa dilakukan


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;
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;

Push : Menambahkan sebuah elemenelemen ke dalam stack. Tidak bisa dilakukan


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;

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;

Anda mungkin juga menyukai