stack - struktur data

16
POLITEKNIK PIKSI GANESHA BANDUNG 2011

Upload: ricky-ardian

Post on 28-Jun-2015

677 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Stack - Struktur Data

POLITEKNIK PIKSI GANESHABANDUNG2011

Page 2: Stack - Struktur Data

PENGERTIAN STACK

Secara 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

Page 3: Stack - Struktur Data

BOS (Bottom of Stack)

K

C A T S

PUSH

POPTOS (TOP of Stack)

TOS (TOP of Stack)

ILUSTRASI

Page 4: Stack - Struktur Data

OPERASI PADA STACK

2 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

Page 5: Stack - Struktur Data

OPERASI PADA STACK

Operasi Push

void Push (NOD **T, char item){

NOD *n;n=NodBaru (item);n->next=*T;*T=n;

}

Page 6: Stack - Struktur Data

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;

}

Page 7: Stack - Struktur Data

Operasi Lainnya

Misal dalam Pascal di deklarasikan :

Const Max = 4; Type TipeData = byte; Stack = array [1..Max] of TipeData Var Top : TipeData;

Page 8: Stack - Struktur Data

Maka,

Buat Stack (Create)

membuat stack baru yang masih kosong

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).

1

0

3

4

2

Page 9: Stack - Struktur Data

Stack Kosong (empty)

mengecek apakah stack dalam keadaan kosong atau tidak

Function Empty : Boolean; Begin Empty := False; If Top := 0 then Empty := True; End;

Page 10: Stack - Struktur Data

Stack Penuh (Full)

mengecek apakah stack dalam keadaan penuh atau tidak

Function Full : Boolean; Begin Full := False; If Top = Max then Full := True; End;

Page 11: Stack - Struktur Data

Implementasi Stack Menggunakan Array (C)

/*Stack menggunakan array*/

#include <stdio.h>

#include <conio.h>

#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 ();

Page 12: Stack - Struktur Data

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 <=top )

{printf (“%d\n”, stack [i]);

i++; } }

Page 13: Stack - Struktur Data

Catatan

Overflow adalah suatu keadaan di mana kita melakukan operasi PUSH terhadap stack dalam keadaan penuh. Underflow adalah keadaan di mana kita melakukan operasi POP terhadap stack kosong.

Pada pascal, Eon adalah elemen yang akan dimasukkan ke dalam stack dan Eoff adalah elemen yang akan dikeluarkan dari dalam stack.

Page 14: Stack - Struktur Data

Implementasi Stack Menggunakan Record (C)

/*Stack menggunakan record*/

#include <stdio.h>

#include <alloc.h>

#include <conio.h>

#define max 50

#define True 1

#define False 0

Typedef struct typestack { int top;

int elemen [max];

};

void buatstack();

void cetakstack ();

void push (int IB);

void pop ();

int stack kosong ();

int stack penuh ();

Page 15: Stack - Struktur Data

void main ()

{

buatstack ();

push (10);

push (76);

push (12);

push (1);

cetakstack ();

printf (“\n\n”);

pop ();

pop ();

pop ();

cetakstack ();

getche();

}

void buatstack ()

{ stack.top = -1; }

int stackkosong ()

{ if (stack.top==-1)

return (True);

else

return (False); }

int stackpenuh ()

{if (stack.top==max)

return (True);

else

return (False); }

void push (int IB)

{ if (stackpenuh() )

printf (“stack overflow \n”);

else

{ stack.top++;

stack.elemen [stack.top] = IB; } ;

void pop ()

{ int IP;

if (stackkosong() )

printf (“stack underflow \n”);

else

{ IP = stack.elemen [stack.top];

stack.top--; } ; }

void cetakstack();

{ int i = 0;

while ( i <= stack.top )

{ printf (“%d\n”, stack.elemen[i]);

i++; } }

Page 16: Stack - Struktur Data