Thursday 24 February 2011

Dasar Teori

STACK atau TUMPUKAN adalah suatu struktur data yang seolah-olah terlihat
•Seperti data yang tersusun secara ‘menumpuk’, dimana ada data yang terletak
diatas data yang lainnya.
•Bersifat LIFO (Last In First Out), berarti data yang masuk terakhir akan keluar
pertama.
•Operasi pada Stack :

  1. IsFull :mengecek apakah STACK sudah penuh
  2. IsEmpty : mengecek apakah STACK sudah kosong
  3. Push :menambah data pada STACK pada tumpukan paling atas
  4. Pop :mengambil data pada STACK pada tumpukan paling atas
  5. Print :mencetak semua data dalam tumpukan




Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi
elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat
pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika
kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen
teratas, yaitu Compo juga.


Menambahkan sebuah item pada posisi paling atas dari sebuah tumpukan


Menghapus item yang terakhir ditambahkan ke tumpukan
Implementation Stack with Array of Struct
- Definisikan Stack dengan menggunakan struct
- Definisikan MAX_STACK untuk maksimum isi stack
- Buatlah variabel array data sebagai implementasi stack secara nyata
- Deklarasikan operasi-operasi/function di atas dan buat implemetasinya
Contoh program:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
//deklarasi 'STACK' dengan struct dan array
struct STACK
{
int data[5];
int atas;
};
//deklarasi variabel 'tumpuk' dari struct
STACK tumpuk;
void main()
{
clrscr();
int pilihan,baru,i;
//inisialisasi awal
tumpuk.atas=-1;
do
{
clrscr();
cout<<"1.Push Data"<<endl;
cout<<"2.Pop Data"<<endl;
cout<<"3.Print Data"<<endl;
cout<<endl;
cout<<"Pilihan = ";
cin>>pilihan;
switch(pilihan)
{
case 1:
{
if(tumpuk.atas==5-1)
{
cout<<"Tumpukan penuh";
getch();
}
else
{
cout<<"Data yang akan di-push = ";
cin>>baru;
tumpuk.atas++;
tumpuk.data[tumpuk.atas]=baru;
}
break;
}
case 2:
{
if(tumpuk.atas==-1)
{
cout<<"Tumpukan kosong";
getch();
}
else
{
cout<<"Data yang akan di-pop =
"<<tumpuk.data[tumpuk.atas]<<endl;
tumpuk.atas--;
getch();
}
break;
}
case 3:
{
if(tumpuk.atas==-1)
{
cout<<"Tumpukan kosong"<<endl;
getch();
}
else
{
cout<<"Data = "<<endl;
for(i=0; i<=tumpuk.atas; i++)
{
cout<<tumpuk.data[i]<<" ";
}
getch();
}
break;
}
default:
{
cout<<" Tidak ada dalam pilihan "<<endl;
}
}
}
while( pilihan >=1 && pilihan <= 3 );
getch();}






0 komentar:

Post a Comment

Iklan

rss


Translate

Chat

Komentar Blog

Iklan