Blogger Backgrounds

Breaking Dawn Soundtrack


Friday, May 28, 2010

STACK

STACK

~Stack adalah suatu bentuk khusus dari linier list, dengan operasi penyisipan dan penghapusan dibatasi hanya pada satu sisinya, yaitu puncak stack (TOP).
~Elemen teratas dari stack dinotasikan sebagai TOP(S).
Untuk stack S, dengan S = [S1, S2, S3, ..., ST]
maka TOP(S) = ST
~Jumlah elemen di dalam stack kita notasikan dengan NOEL(S).
NOEL(S) menghasilkan nilai integer.
Untuk stack S = [S1, S2, S3, ..., ST] maka NOEL (S) = T.

~Operator penyisipan (insertion) : PUSH
~Operator penghapusan (deletion) : POP
~Operasi stack : LIFO (Last In First Out), yaitu : yang terakhir masuk yang pertama keluar.

~Jika ada NOEL elemen didalam stack, maka elemen ke NOEL merupakan elemen puncak (TOP).
Stack secara umum :
S = [S1, S2, ..., SNOEL]
bahwa : SI berada di atas elemen SJ,untuk I > J
SI akan dikeluarkan lebih dulu dari elemen di bawahnya.

~Contoh stack : Tumpukan baki dalam cafetaria

Empat operasi dasar yang berlaku pada stack :
1. CREATE(stack)
2. ISEMPTY(stack)
3. PUSH(elemen, stack)
4. POP(stack)

CREATE
adalah operator yang menunjukkan suatu stack kosong dengan nama S.

Jadi : NOEL(CREATE(S)) = 0
TOP(CREATE(S)) adalah TIDAK TERDEFINISI.

ISEMPTY
adalah operator yang menentukan apakah stack S kosong.
Operandnya terdiri dari type data stack. Hasilnya merupakan type data Boolean.

ISEMPTY(S) = True. Jika S hampa, yakni bila NOEL(S) = 0.

PUSH
adalah operator yang menambahkan elemen E pada puncak stack S. Hasilnya merupakan stack yang lebih besar.
PUSH(E,S). E ditempatkan sebagai TOP(S).

POP(stack)
adalah operator yang menghapus sebuah elemen dari puncak stack S. Hasilnya merupakan stack yang lebih kecil.

POP(S) mengurangi NOEL(S)
POP(CREATE(S)) ® kondisi error
POP(PUSH(E,S)) = S

DEKLARASI STACK DALAM COBOL DAN PASCAL

TOP-PTR

® 100 S Keterangan :
·
·STACK S
·TOP-PTR : subskrip dari elemen TOP(S) dari stack.
1

~COBOL

01 STACK-STRUCT ® kombinasi dari array & indikator untuk TOP
02 S OCCURS 100 TIMES PIC 9(5)
02 TOP-PTR PIC 9(3)

PASCAL

TYPE STACKSTRUCT= RECORD
STACK:ARRAY[1..100]ofinteger;
TOPPTR : integer;
END;

VAR S : STACKSTRUCT;

NOEL(S)=TOP-PTR,ISEMPTY(S)=true,bila TOP-PTR= 0.


OPERASI PUSH & POP

~PUSH

IF TOP-PTR < NOEL-MAX
THEN COMPUTE TOP-PTR=TOP-PTR + 1
MOVE EON TO S(TOP-PTR)
ELSE Overflow condition

~POP

IF TOP-PTR > 0
THEN MOVE S(TOP-PTR) TO EOFF
COMPUTE TOP-PTR = TOP-PTR-1
ELSE Underflow condition

EON : elemen yang di PUSH ke dalam S.
EOFF : elemen yang di POP ke luar S.
NOEL-MAX : panjang max stack.


~PUSH
Procedure PUSH (eon: integer);
Begin
if (s.topptr < noelmax)
then
Begin
s.topptr := s.topptr + 1;
s.stack [s.topptr] := eon;
End;else Overflow-condition
End;




POP

Procedure POP (var eoff : integer);
Begin
if (s.topptr > 0)
then Begin
eoff := s.stack [s.topptr];
s.topptr := s.topptr - 1;
End;
else Underflow Condition
End;

APLIKASI STACK

1. Penjodohan Tanda Kurung/Matching Parantheses
ALGORITMA
a.Amati barisan elemen dari kiri ke kanan
b.·bila bertemu ‘(‘, maka ‘(‘ di push ke dalam stack.
·bila bertemu ‘)’, maka periksa stack hampa atau tidak.
bila hampa ® ada‘)’dan tidak ada‘(‘(error)
bila tidak hampa ® ada sepasang ‘(‘&‘)’ & POP elemen keluar

2. NOTASI POSTFIX
ALGORITMA
Amati barisan dari kiri ke kanan
1.Jika ‘(‘, maka PUSH ke dalam stack.
2.Jika ‘)’, POP elemen dalam stack sampai simbol ‘(‘. Semua di POP merupakan output kecuali ‘(‘ tadi.
3.Jika simbol operand, langsung merupakan output.
4.Jika simbol operator, maka :
Jika elemen TOP stack dengan level
>=maka POP sebagai output teruskan sampai ‘(‘.
elemen TOP <, operator yang diamati di PUSH ke dalam stack.
5.Bila ‘;’ kita POP semua elemen dalam stack hingga hampa.

No comments:

Post a Comment