Dalam operasai yang sering diterapkan
pada struktur data adalah push dan pop.
Operasi-operasi dasar yang anda dapat diterapkan sebagai berikut:
a. Createstack( S ) : membuat tumbukan baru S, dengan
jumblah elemen kosong.
b. MAKENULL ( S ) : Mengosongkan Tumpukan S, jika ada
elemen maka semua elemen dihapus.
c. EMPTY : Tumpukan Kosong?. Menguji apakah tumpukan
kosong.
d. PUSH (x,s) – mengeluarkkan elemen posisi atas pada
tumpukan S tersebut.
e. POP ( s ) – mengeluarkan elemen posisi atas pada
tumpukan S.
Ilustarsi Operasi POP dan PUSH Terhadap
Gambar Stack Sebagai Berikut:
Apa
yang terjadi bila dilakukan POP ( S) sebanyak dua kali lagi?. Underflow. Artinya tumpukan kosong tidak
ada elemen yang dapat diambil. Apa yang terjadi bila dilakukan PUSH ( X,S)
sebanyak 10 kali, jika kapasitas tumpukan adalah 5 lagi?. Overflow, artinya tumpukan penuh tidak ada elemen yang dapat
dimasukkan ke dalam tumpukan. Pada proses PUSH, Tumpukan harus diperiksa apakah
jumlah elemen sudah mencapai maksimum atau tidak. Jika sudah mencapai maksimum
maka OVERFLOW. Jika anda meriksa elemen
yang harus dikeluarkan atau tidak. Jika tidak maka UNDERFLOW.
Algoritma PUSH: PUSH(S, TOP,
MAKSTUM, ELEMEN)
1. [ periksa kandungan tumpukan, apakah penuh?] jika
TOP=MAKSTUM; Cetakkan ‘OVERFLOW’
2. [ Tambahkan TOP dengan 1 ] TOP:=TOP + 1
3. [ Masukkan ELEMEN Ke dalam loksai TOP yang baru] S[
TOP] : = ELEMEN
4. Return
Algoritma POP: POP(S,TOP, ELEMEN)
1. [Periksa kandungan tumpukan, apakah kosong?] jika
TOP = 0; cetakkan ‘UnderFlow’
2. [ Simpan nilai teratas pada ELEMEN] ELEMEN := S[TOP]
3. [Kurangkan TOP dengan 1 ] TOP: = TOP – 1
4. Return
Untuk
lebih jelasnya lagi perhatikan opersai-operasi dasar pada tumpukan yang ditulis
dalam bahasa pascal.
Program Operasi_Tumpukan;
Const
MAKSTUM = 80;
Type
jenisElemen = char;
Tumpukan = record
Elemen : Array[ 1..MAKSTUM] of Jenis Elemen;
Top : 0..MAKSTUM;
end;
{Operasi 1 }
Procedure CreateStack(Var S: Tumpukan);
Begin
S.Top := 0;
End;
{Operasi 2}
Procedure MakeNull(ElemenBaru : JenisElemen; Var S: Tumpukan);
Begin
S.Top :=0;
End;
{Operasi 3 : PUSH}
Procedure Push(ElemenBaru : JenisElemen ;Var S: Tumpukan);
Begin
if S. Top= MAKSTUM then
Writeln('OverFlow')
else
Begin
S.Top := S.Top +1;
S.Elemen[S.Top]: ElemenBaru;
End;
End;
{Operasi 4 : POP, agar elemen yang diambil dari tumpukan bisa disimpan diperlukan variabel
NilaiElemen}
Procdure Pop(Var S: Tumpukan; Var NilaiElemen: JenisElemen);
Begin
if S.Top = 0 then
Writeln('UnderFlow')
else
NilaiElemen := Slemen[S.Top];
S.Top -1;
End;
End;
{Operasi 5 : Tumpukan Kosong}
{Akan memulangkan nilai TRUE jika tidak elemen dalam Tumpukan atau FALSE jika ada elemen dalam tumpukan}
Function Empty(Var S: Tumpukan) : Boolean;
Begin
Empty := S.Top = 0;
End;
Baca juga ya di bawah ini:
Post a Comment