Stack
bias diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang
diletakan di atas data yang lain (Tumpukan). Di dalam stack ini dapat
menambahkan ataupun mengambil data melalui ujung yang sama, yang disebut dengan
ujung atas stack. Pengertian Stack atau Tumpukan adalah suatu
stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In
First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama
yang dikeluarkan dari stack.
Stack (Tumpukan) adalah list linier yang
dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya
tertentu. Penyisipan selalu dilakukan “di atas“ TOP dan Penghapusan
selalu dilakukan pada TOP.
Istilah dalam stack:
PUSH: Simpan, Masuk, Insert, Tulis
POP: Ambil, Keluar, Delete,Baca
Operasi dasar Stack
-
Create
Operator create berfungsi untuk membuat
sebuah stack kosong.
-
Isempty
Operator Isempty berfungsi untuk menentukan
apakah suatu stack merupakan stack kosong.
-
Push
Operator push berfungsi untuk menambahkan
suatu elemen ke dalam stack.
-
Pop
Operator pop berfungsi untuk mengeluarkan
satu elemen dari dalam stack.
Ada dua jenis satck: Single Stack dan Double Stack.
Single Stack (Stack Tunggal)
Single
stack dapat direpresentasikan menggunakan array 1 Dimensi
Proses Single Stack
-
Awal (Inisialisasi)
-
PUSH (Insert,Masuk,Simpan,Tulis)
-
POP (Delete,Keluar,Ambil,Baca)
Double Stack (Stack Ganda)
Proses Double Stack :
Awal (inisialisasi)
Push1 (push untuk stack 1)
Pop1 (pop untuk stack 1)
Push2 (push untuk stack 2)
Pop2 (pop untuk stack 2)
Contoh Program Stack
#include
<iostream.h>
#include
<conio.h>
#define
max 10
struct
Tumpukan{
int atas;
int data[max];
}T;
void
awal(){
T.atas=-1;
}
int
kosong(){
if(T.atas==-1)
return 1;
else
return 0;
}
int
penuh(){
if(T.atas==max-1)
return 1;
else
return 0;
}
void
input(int data){
if(kosong()==1)
{T.atas++;
T.data[T.atas]=data;
cout<<"Data
"<<T.data[T.atas]<<" masuk ke stack";}
else if(penuh()==0)
{T.atas++;
T.data[T.atas]=data;
cout<<"Data
"<<T.data[T.atas]<<" masuk ke stack";}
else
cout<<"Tumpukan penuh";
}
void
hapus(){
if(kosong()==0){
cout<<"Data teratas sudah terambil";
T.atas--;
}
else
cout<<"Data kosong";
}
void
tampil(){
if(kosong()==0)
{for(int i=T.atas;i>=0;i--)
{cout<<"\nTumpukan ke
"<<i<<"="<<T.data[i];}
}
else
cout<<"Tumpukan kosong";
}
void
bersih(){
T.atas=-1;
cout<<"Tumpukan
kosong!";
}
void
main(){
int
pil,data;
awal();
do
{
clrscr();
cout<<"1.
Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukkan pilihan :";
cin>>pil;
switch(pil)
{case 1:cout<<"Masukkan data =
";cin>>data;
input(data);
break;
case 2:hapus();
break;
case 3:tampil();
break;
case 4:bersih();
break;
case 5: cout<<"Terimakasih, tekan enter untuk keluar";
}
getch();
}
while(pil!=5);}
Semoga artikel ini bisa bermanfaat ....
Sumber Refrensi :
Sumber Refrensi :
10 Langkah Belajar logika dan algoritma, menggunakan bahasa c dan c++
Tidak ada komentar:
Posting Komentar