Kali ini saya akan memnjelaskan tentang apa sih yang namanya stack [tumpukan] dalam bahasa pascal.
Jadi,secara sederhana tumpukan
bisa diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang
diletakkan di atas data lain. Satu hal yang perlu diingat adalah bahwa kita
bisa menambahkan (menyisipkan) data, mengambil (menghapus) data lewat ujung yang
sama, yang disebut sebagai ujung atas tumpukan (top of stack).
Implementasi tumpukan dengan larik
Penyajian tumbukan bisa
menggunakan larik )array) walaupun penyajian dengan menggunakan larik dianggap
kurang tepat karena banyaknya elemen dalam larik sudah tertentu (statis)
sedangkan pada tumpukan, banyaknya elemen bisa sangat bervariasi (dinamis).
Meskupun demikian , larik bisa digunakan dengan anggapan bahwa banyaknya elemen
maksimal dari tumpukan tersebut tidak akan melebihi batas maksimal dari banyaknya
elemen dalam larik.
Deklarasi tumpukan bisa
menggunakan tipe data terstruktur yaitu tipe rekaman (record) yang terdiri dari
dua medan. Medan pertama berisi larik untuk menyimpan elemen tumpukan yang
bertipe, sedang medan kedua bertipe integer untuk mencatat posisi ujung
tumpukan, sebagai berikut:
Const max_elemen = 255;
Type tumpukan = record
Isi : array
[1..max_elemen] of integer;
Atas : 0..max_elemen;
End;
Var t:tumpukan;
Operasi yang bisa dilakukan pada tumpukan
adalah operasi push, dan operasi pop.
Implementasi prosedur push:
Procedure
push(var T:tumpukan; x:integer);
Begin
T.Atas :=
T.Atas + 1;
T.Isi[T.Atas]
:= x;
End;
Implementasi prosedur pop:
Procedure pop(var
T:tumpukan);
Begin
T.Atas := T.Atas – 1;
End;
Cobalah program di bawah ini, amati untuk
beberapa masukan yang berbeda.
Program
pop_push;
Uses
crt;
Const
elemen = 225; {batas maksmimum karakter}
Type
s255 = string [elemen];
Tumpukan = record
Isi : s255;
Atas : 0 ..elemen;
End;
Var t :
tumpukan;
W :
char;
Kalimat:s255;
I,j :
integer;
Procedure
awalan(var : tumpukan);
Begin
T.atas := 0
End;
Procedure
push(var T : tumpukan; x : char);
Begin
T.atas := t.atas+1;
T.isi[t.atas] := x;
End;
Function
pop(var t:tumpukan): char;
Begin
Pop:=t.isi[t.atas];
t.atas := t.atas-1
end;
begin
{program utama}
clrscr;
{melakukan
proses push}
writeln(‘Masukkan
kalimat = ‘);
read(kalimat);
for
i:=1 to lenght(kalimat) do
push(t, kalimat[i]);
write(‘Elemen
yang di-push = ‘,kalimat);
readln;
{melakukan
proses pop}
for i:=1
to lenght(kalimat) do
push(t,kalimat[i]);
writeln;
writeln(‘Hasil
akhir push dibaca dengan pop = ‘);
{menampilkan
hasil proses pop}
for
j:= 1 to lenght(kalimat) do
begin
w:=pop(t);
write(w);
end;
readln;
end.
Modifikasi program diatas untuk menambahkan sebuah
karakter dalam tumpukan.
Contoh
input : aku suka kamu
Tambahan
karakter : q
Hasil
akhir : q umka akus uka


0 komentar:
Post a Comment