Materi 04x - AKADEMI TEKNIK KUPANG

Download Report

Transcript Materi 04x - AKADEMI TEKNIK KUPANG

Struktur Data - Gerlan A. Manu, ST.,MKom
STRUKTUR DATA
TUMPUKAN (STACK)
1
Struktur Data - Gerlan A. Manu, ST.,MKom
PENGERTIAN TUMPUKAN
Tumpukan adalah suatu kumpulan data yang
seolah-olah ada data yang diletakkan di atas data
lain.
 Misalnya kita mempunyai dua buah kotak yang
kita tumpuk, sehingga kotak kita letakkan di atass
kotak yang lain. Jika kemudian tumpukan dua
kotak itu kita tambah dengan kotak ketiga,
keempat dan seterusnya maka akan kita peroleh
sebuah tumpukan kotak, yang terdiri dari N kotak.

2
Struktur Data - Gerlan A. Manu, ST.,MKom
ILUSTRASI TUMPUKAN
menambahkan
Tumpukan bisa diilustrasikan seperti gambar disamping.
dari gambar kita bisa mengatakan bahwa kotak B ada
diatas kotak A dan ada di bawah kotak C.
menghapus
F
E
D
C
B
A
atas
Dari gambar ini kita hanya bisa menambah atau
mengambil sebuah kotak lewat satu ujung, yaitu ujung
bagian atas.
Dapat dilihat pula bahwa tumpukan merupakan kumpulan
data yang sifatnya dinamis, artinya kita bisa menambah
dan mengambil data darinya.
Dengan memperhatikan ilustrasi ini maka kita bisa melihat
bahwa tumpukan merupakan suatu senarai (list) yang mempunyai watak “masuk terakhir keluar pertama” atau disebut
LIFO (Last In First Out).
3
Struktur Data - Gerlan A. Manu, ST.,MKom
PENYAJIAN TUMPUKAN PADA PASCAL
Tumpukan = Kumpulan Data
 Array bisa digunakan untuk menyajikan
tumpukan.
 Namun pada kumpulan data biasanya terdiri
dari elemen-elemen yang bervariasi(dinamis),
sedangkan untuk array elemennya statis.
 Untuk elemen yang dinamis bisa digunakan
record.

4
Struktur Data - Gerlan A. Manu, ST.,MKom
DEKLARASI TUMPUKAN
Const MaxElemen = 255;
Type Tumpukan = record
isi : array[1 .. MaxElemen] of Integer;
atas : 0 .. MaxElemen
end;
Jika T.Atas = 5, berarti dalam
tumpukan ada 5 elemen, yaitu
Var T : Tumpukan;
T.isi[1],T.isi[2],….., T.isi[5]. Jika data
Dengan deklarasi di atas kita menganggap bahwa
elemen tumpukan T, yang tersimpan dalam larik T.Isi
adalah bertipe integer dan banyaknya elemen
tumpukan maksimum adalah sebesar MaxElemen,
yang dalam hal ini 255 elemen.
Pada medan Atas, nilainya menunjukkan banyaknya
elemen yang ada dalam suatu tumpukan, yang
sekaligus menunjukkan posisi elemen teratas dalam
tumpukan yang dimaksud.
yang diambil, maka nilai Medan
T.Atas dikurangi 1 menjadi 4, yang
berarti T.isi[4] adalah elemen teratas.
Jika data ditambah maka nilai T.atas
ditambah dengan 1 menjadi 6,
sehingga T.isi[6] adalah elemen
teratas.
5
Struktur Data - Gerlan A. Manu, ST.,MKom
OPERASI PADA TUMPUKAN

Ada dua operasi dasar yang bisa kita
laksanakan pada sebuah tumpukan, yaitu
 Operasi
menyisipkan data, atau mem-push data.
 Operasi menghapus data atau mem-plop data.

Karena dalam tumpukan kita bisa mempush
data, maka tumpukan juga sering disebut
pusdown list.
6
Struktur Data - Gerlan A. Manu, ST.,MKom
OPERASI PUSH
Procedure PUSH(var T : Tumpukan; X : integer);
Begin
Procedure ini akan menyisipkan
tempat untuk x yang akan dipush ke
T.Atas := T.Atas + 1;
dalam tumpukan, yaitu dengan
menambah nilai medan T.Atas dengan
T.Isi[T.Atas] := X;
1 dan kemudian menyisipkan x ke
dalam larik T.isi.
End;
Dari procedure ini, masalah akan
timbul saat T.Atas sama dengan
Max Elemen dan jika kita
mempush lagi maka akan terjadi
overflow
pada
array
T.Isi,
disebabkan
karena
deklarasi
banyaknya elemen array tersebut
tidak mencukupi.
Sehingga
procedure diatas berpu dirubah
menjadi :
Procedure PUSH (var T : Tumpukan; X :
Integer);
Begin
If T.Atas = MaxElemen then
writeLn (‘Tumpukan Sudah Penuh’)
else
begin
T.Atas := T.Atas + 1; T.Isi[T.Atas] := x
end
End;
7
Struktur Data - Gerlan A. Manu, ST.,MKom
OPERASI POP
Procedure POP (var T : Tumpukan);
Begin
if T.Atas = 0 then
writeLn (‘Tumpukan Sudah Kosong’);
else
T.Atas := T.Atas -1
End;
8
Struktur Data - Gerlan A. Manu, ST.,MKom
CONTOH PEMAKAIAN TUMPUKAN
Contoh Program Untuk Membalikkan Kalimat.
Dalam hal ini yang dibalik adalah seluruh
kalimat bukan per kata.
 Input : BELAJAR PASCAL ADALAH MUDAH DAN
MENYENANGKAN
 Output : NAKGNANEYNEM NAD HADUM
HALADA LACSAP RAJALBE

9
Uses wincrt;
Const Elemen = 255;
Type S255 = String[Elemen];
Tumpukan = record
isi : s255;
atas : 0..elemen
end;
Var
T : Tumpukan;
I : Integer;
Kalimat : S255;
Procedure Awalan(Var T : Tumpukan);
Begin
T.Atas := 0
End;
Struktur Data - Gerlan A. Manu, ST.,MKom
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;
{Program Utama}
Begin
clrscr;
Awalan(T);
write ('Masukan sembarang kalimat : ');
ReadLn (Kalimat);
WriteLn;
{ mempush kalimat ke dalam tumpukan}
For I := 1 to length(Kalimat) do
PUSH(T, Kalimat[I]);
End.
{mempop isi tumpukan sehingga diperoleh kalimat yang dibaca terbalik}
For I := 1 to length(Kalimat) do
write(POP(T));
WriteLn;
10