stack(tumpukan)
Stack ( Tumpukan)
Pengertian ?
Sekumpulan data yang diletakkan diatas data yan lain , dan bisa melakukan penambahan (penyisipan ) data dan pengambilan (penghapusan) data lewat ujung yang sama.(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).
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;
Keterangan :
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
1. 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;
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;
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;
end;
http://www1.search-results.com/web?l=dis&q=STACK(TUMPUKAN+)LIFO&o=APN10645&apn_dtid=^BND406^YY^ID&shad=s_0042&apn_uid=3040500489484140
Kategori
- Masih Kosong
Blogroll
- Masih Kosong