stack - struktur data

Click here to load reader

Download Stack - Struktur Data

Post on 28-Jun-2015

650 views

Category:

Documents

9 download

Embed Size (px)

TRANSCRIPT

POLITEKNIK PIKSI GANESHA BANDUNG 2011

PENGERTIAN STACKSecara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah diletakkan di atas data yang lain koleksi dari objek-objek homogen Dengan konsep utamanya adalah LIFO Last In First Out

PUSH POP

ILUSTRASI

CTOS (TOP of Stack) A T

S

TOS (TOP of Stack)

K

BOS (Bottom of Stack)

OPERASI PADA STACK2 operasi dasar yang bisa dilaksanakan pada sebuah stack, yaitu: Operasi Push (menyisipkan data) memasukkan data ke dalam stack Operasi Pop (menghapus data) menghapus elemen yang terletak pada posisi paling atas dari sebuah stack

OPERASI PADA STACK

Operasi Push

void Push (NOD **T, char item) { NOD *n; n=NodBaru (item); n->next=*T; *T=n; }

OPERASI PADA STACK

Operasi Pop

char Pop (NOD **T) { NOD *n; char item; if (!StackKosong(*T)) { P=*T; *T=(*T)->next; item=P->data; free(P); } return item; }

Operasi LainnyaMisal dalam Pascal di deklarasikan :Const Max = 4; Type TipeData = byte; Stack = array [1..Max] of TipeData Var Top : TipeData;

Maka,

Buat Stack (Create) membuat stack baru yang masih kosong4 3 2 1 0

Procedure Create; Begin Top := 0; End;

Konsepnya adalah bahwa Top menunjukkan tingginya tumpukkan stack. Jika tinggi Top adalah 0, berarti tumpukan kosong. Prosedur ini digunakan juga dalam penghapusan isi stack (Clear).

Stack Kosong (empty) mengecek apakah stack dalam keadaan kosong atau tidakFunction Empty : Boolean; Begin Empty := False; If Top := 0 then Empty := True; End;

Stack Penuh (Full) mengecek apakah stack dalam keadaan penuh atau tidakFunction Full : Boolean; Begin Full := False; If Top = Max then Full := True; End;

Implementasi Stack Menggunakan Array (C)/*Stack menggunakan array*/ #include #include #define max 50 #define True 1 #define False 0 int top=0, stack[max]; void buatstack(); int stackkosong (); int stackpenuh (); void push (int IB); void pop (); void cetakstack ();

void main () { buatstack (); push (10); push (76); push (12); push (21); cetakstack (); getche; printf (\n\n); pop (); pop (); pop (); cetakstack (); getche(); }

void buatstack () { stack[top] = 0; } int stackkosong () { if (top==0) return (True); else return (False); } int stackpenuh () { if (top==max) return (True); else return (False); }

void push (int IB) { if (stackpenuh() ) printf (stack overflow \n); else { top++; stack[top] = IB; stack[0] = top; } } void pop () { int IP; if (stackkosong() ) printf (stack underflow \n); else { IP = stack[top]; top --; stack[0] = top; } } void cetakstack(); { int i = 1; while ( i

View more