Senin, 15 September 2008

Struktur Data (Operasi Stak)

Stak atau biasa kita kenal dengan istilah tumpukan, Merupakan stah satu darri struktur data dengan bentuk khusus dari Linier List list yang berurutan, dimana pemasukan dan penghapusan elemennya datanya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari List (Top)sedangkan Prinsip Stack adalah LAST-IN-FIRST-OUT (LIFO). Komponenya berupa Isemty, Isfull, Push, Pop dan clear.


ISEMPTY

  Untuk memeriksa apakah stack kosong, Dengan cara memeriksa TOP of STACK. Jika TOP masih = -1 maka berarti stack masih kosong


ISFULL

  Untuk memeriksa apakah stack sudah penuh, Dengan cara memeriksa TOP of Stack.

  Jika TOP of STACK = MAX_STACK-1 maka FULL (Penuh)

  Jika TOP of STACK < MAX_STACK-1 maka belum penuh


PUSH

    Untuk menambahkan item pada posisi paling atas (TOP), Menambah satu (increment) nilai TOP of   STACK setiap ada penambahan elemen   stack selama stack masih belum penuh kemudian Isikan nilai baru ke stack berdasarkan indeks TOP   of STACK setelah ditambah satu   (diincrement)


POP

  Untuk menghapus item paling atas (TOP)dengan cara:

  1. Ambil dahulu nilai elemen teratas stack   dengan mengakses TOP of STACK.
  2. Tampilkan nilai yang akan diambil.
  3. Lakukan decrement nilai TOP of STACK   sehingga jumlah elemen stack berkurang 1


CLEAR

  Untuk mengosongkan stack, membuat stack hampa sehingga Top pada Stack berada kembali di posisi Top = -1


      #include
      #include
      #include
void main()
{
int stack[10];
int top=-1;
int pilih, i;
do
{
gotoxy(25,2);cout<<"========MENU PILIHAN========"<gotoxy(25,4);cout<<"============================"<gotoxy(30,6);cout<<" 1. PUSH "<gotoxy(30,7);cout<<" 2. POP "<gotoxy(30,8);cout<<" 3. VIEW "<gotoxy(30,9);cout<<" 4. EXIT "<gotoxy(25,11);cout<<"============================"<gotoxy(25,12);printf("Pilih = "); scanf("%d", &pilih);
switch(pilih)
{
case 1://push
clrscr();
if (top > 10)
printf("Stack penuh!\n");
else
{    printf("Data = "); scanf("%d", &stack[top+1]);
top++;
}
break;

case 2://pop
clrscr();
if (top < 0)
printf("Stack kosong!\n");
else
{
printf("Data keluar = %d\n", stack[top]);
top--;
}
break;

case 3://view
cout<<"\n\ndata yang ada pada STACK : \n";
{
for(i=top; i>=0; i--)
printf("%d ", stack[i]);
printf("\n");
}
break;

case 4:
printf("Exit…\n");
break;
}
}while (pilih!=4);
}