" aLL tHanks f0r vIew bLog_y na'2;(n_n)...

wELc0me to mY bLog....

m0hon c0mment-y yApppzzz..!!!


(n_n)


Minggu, Mei 24, 2009

_ 5'th m0duL !



" STACK ( Tumpukan ) "

-StaCk itU Adalah tumpulan data yang seolah-olah ada data di atas data lain.

-Suatu metode untuk Input dan hapus di dalam memori komputer.


Konsep utama dalam STACK adalah LIFO ( Last In First Out ).

Contoh-Nya:


5 Guntur

4 Aditya
3 Tyas
2 Hendra
1 Dyah


Data nomor 1 datang/masuk duluan, data nomor 5 yang paling atas yang keluar terlebih dahulu.

Algoritma-Nya:

1. Input/tambah data

• Jika ada input maka no stack/no tumpukan yang semula 0 akan tambah 1 demi 1 sampai maksimal tumpukan.

2. Pengambilan data

• Jika ada pengambilan data maka data dipindahkan di variabel lain contohnya temp. Dan posisi tumpukannya yang semula maksimal akan berkurang 1 demi 1 sampai posisi 0 kembali.



1. Deklarasi STACK

Type
Const
Max = 5;
Nama record = Record
Data : type data;
Top : byte;
End;
Nama_array = ARRAY [1..max] of Nama record;
Var
STACK : nama Array;

1 2 3 4


Nama Array-----Barang
Nama Record---Coba
Nama Variabel--Stack

Contoh Deklarasi dari gambar diatas:


Type
Coba = record
Data :string;
Top : byte;
End;
Barang = ARRAY [1..4] of coba;
Var
Stack:barang;


2. Operasi pada STACK

• CREATE
Membuat stack baru yang masih kosong.

Procedure create;
Begin
Stack.top:=0;
End;

• FULL

Untuk memeriksa apakah stack sudah penuh atau belum.

Fuction full:bolean;
Begin
Stack.top:=max;
End;

• PUSH
Menambah sebuah elemen ( data ) kedalam stack
Syarat: tidak bisa dilakukan jika stack sudah penuh.

Procedure push ( input:string );
Begin
If not full then
Begin
Stack.top:=stack.top;
Stack.data:=input;
End;
End;

• EMPTY

Fuction empty: bolean;
Begin
Empty:=false;
If top:=0 then empty:=true;
End;

• POP

Mengambil elemen teratas dari stack.
Syarat: Stack tidak boleh kosong.

Procedure Pop ( elemen:string );
Begin
If not empty then
Begin
Elemen:=stack.data;
Stack.top:=top – 1;
End;
End;


Contoh:

1 2 3 4

Uses wincrt;
Type
kelas = ARRAY[1..4] of string;
Var
Stack: kelas;
top:byte;
Elemen: string;
I : integer;
Begin
top:=0;
For i:=1 to 4 do
Begin
Writeln('masukkan nama ke', ' ',i,' ','='); readln(stack[i]);
top:=top+1;
End;
writeln('posisi tumpukan=',top);
Writeln('pengambilan data');
For i:=1 to 4 do
Begin
Elemen:=stack[i];
top:=top - 1;
End;
writeln;
Writeln('data elemen sekarang=',elemen);
writeln('posisi tumpukan=',top);
Readln;
End.

2 komentar: