stack - struktur data
Post on 28-Jun-2015
650 views
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