Anda di halaman 1dari 13

STRUKTUR DATA

TUMPUKAN (STACK)

1.HUSNI ABDUL AZIZ 2.JOKO ARIYADI 3.RYAN AZWARI 4.EKO 5.TAUFIQ

PENGERTIAN TUMPUKAN
Tumpukan adalah suatu kumpulan data yang seolah-olah ada data yang diletakkan di atas data lain. (Sekumpulan data terstruktur dengan sifat operasi penambahan (push) dan pengambilan (pop) elemen melalui satu tempat (top of stack).) Stack merupakan senarai (list) dengan sifat LIFO (last In First Out).

ILUSTRASI TUMPUKAN
menambahkan menghapus

Tumpukan bisa diilustrasikan seperti gambar disamping. dari gambar kita bisa mengatakan bahwa kotak B ada diatas kotak A dan ada di bawah kotak C.
atas

F E D C B A

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 mem punyai watak masuk terakhir keluar pertama atau disebu LIFO (Last In First Out).

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.

DEKLARASI STACK

Stack dapat dideklarasikan dengan sebuah record yang mempunyai elemen sebuah array data untuk menyimpan elemen stack dan sebuah variabel top untuk menyimpan elemen stack teratas (top elemen). Deklarasi selengkapnya sebagai berikut : Type TipeElemen = array[1..MaxElemen] of TipeInfo TipeStack = record Elemen :TipeElemen; TOP :0..MaxElemen; end; Var Stack : TipeStack;

TipeStack : adalah nama pengenal tipe untuk untuk stack MaxElemen: adalah jumlah maksimal elemen stack Elemen : adalah array model linear dengan index mulai dari 1 s/d maksimal elemen. Tipe Data : adalah tipe data dari elemen elemen stack. Top : adalah elemen untuk menunjuk elemen teratas dari stack. Stack : adalah variabel yang bertipe stack.

OPERASI-OPERASI PADA STACK

Inisialisasi. Inisialisasi adalah proses untuk membuat stack dalam keadaan kosong. Proses ini dilakukan dengan mengisi variabel top dengan nilai yang tidak menunjuk salah satu elemen array. Spesifikasi prosedure inisialisasi : Tujuan : mendeklarasikan stack yang kosong. Input : stack yang akan diinisialisasi. Syarat awal : - (tidak ada) Output : stack. Syarat akhir : stack dalam keadaan kosong. Prosedure selengkapnya : procedure Inisialisasi( var Stack :TipeStack); begin Stack.Top:=0; end;

2.Operasi untuk mengetahui apakah stack dalam keadaan kosong atau tidak, Dengan spesifikasi: Tujuan : mengecek apakah stack dalam keadaan kosong Input : stack Syarat awal : - (tidak ada) Output : boolean (kosong atau tidak kosong) Syarat akhir : fungsi bernilai true jika stack dalam keadaan kosong

Fungsi selengkapnya sebagai berikut :

function Stack_Kosong(Stack:TipeStack):boolean; begin Stack_Kosong:=(Stack.Top=0); end;

3.Fungsi Size Operasi untuk mengetahui jumlah elemen stack. Tujuan :Mengetahui jumlah elemen stack Input :Stack Syarat awal :Stack sudah di inisialisasi Output :Index Stack teratas (top) Syarat akhir :Tidak ada

Fungsi selengkapnya sbb : Function Size (Stack:TipeStack):Integer; begin Size:= Stack.Top; end;

4.Operasi untuk mengetahui apakah Stack dalam keadaan penuh atau tidak Dengan spesifikasi : Tujuan : mengecek apakah stack dalam keadaan penuh (full) Input : Stack Syarat awal : - (tidak ada) Output : boolean (penuh atau kosong) Syarat akhir : stack penuh bernilai true jika stack dalam keadaan penuh Fungsi selengkapnya : function Stack_Penuh(Stack:TipeStack):boolean; begin Stack_Penuh:=(Stack.Top=MaxElemen); end;

5.Prosedure memasukkan data (Push) ke dalam stack Dengan Spesifikasi : Tujuan : menambah elemen InfoBaru pada posisi paling atas Input : stack dan InfoBaru Syarat awal : stack tidak penuh Output : stack (keadaan sudah berubah) Syarat akhir : stack bertambah 1 (satu) elemen. Prosedure selengkapnya sebagai berikut : procedure Push(var Stack:TipeStack;InfoBaru:TipeInfo); begin if not Stack_penuh(Stack) then begin Stack.Top:=Stack.Top + 1; Stack.Elemen[Stack.Top]:=InfoBaru; end; end;

6.Mengambil / mengeluarkan elemen (Pop) dari stack. Prosesnya meliputi mengambil data dari elemen paling atas, kemudian menghapus elemen tersebut dengan cara mengubah nilai top untuk menunjuk elemen dibawahnya. Spesifikasi : Tujuan : mengambil (mengeluarkan) elemen dari stack yang berada pada puncaknya (top of stack) lalu disimpan dalam InfoPop. Input : stack Syarat awal : stack tidak kosong Output : stack dan infoPop Syarat akhir : stack berkurang 1 (satu) elemen

Prosedure selengkapnya : procedure Pop(var Stack:TipeStack;var InfoPop:TipeInfo); begin if not Stack_Kosong(Stack) then begin InfoPop:=Stack.Elemen[Stack.Top]; Stack.Top:=Stack.Top - 1; end;

uses wincrt; const elemen =255; {batas maximum 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 T : 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); writeln; for i := 1 to length (kalimat) do push (T, kalimat [i]); write('Elemen yang di-push : ', kalimat); writeln; readln;

{melakukan proses pop} for i := 1 to length (kalimat) do

Anda mungkin juga menyukai