STACK
1. Pengertian Stack
Stack adalah tipe data
abstrak yang umum digunakan pada seluruh pemrograman komputer. Stack dapat
diartikan sebagai tumpukan dari benda atau data yang seolah – olah diletakkan
diatas data yang lain dimana data yang pertama kali masuk akan terakhir. Secara
sederhana sebuah stack bisa digambarkan sebagai tumpukan buku yang disimpan
dengan cara ditumpuk keatas, dimana buku yang pertama kali disimpan atau
ditumpuk ada di paling bawah dan yang selanjutnya ditumpuk diatasnya, dan
ketika kita melakukan pengembalian buku otomatis buku yang terakhir ditumpuk
atau disimpan terakhir akan menjadi yang oertama diambil.
2. Operasi dari Stack
1)
Operasi
Push yaitu operasi menambahkan elemen pada urutan teakhir (paling atas)
2)
Operasi
Pop yaitu operasi mengambil sebuah elemen data urutan terakhir dan menghapus elemen
tersebut dari stack.
3. Contoh Program
|
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#define max 4
using namespace std;
struct Tumpukan
{
int atas;
int data[max];//array
}T;//objeknya
void awal()//prosedur awal
digunakan untuk merubah indeks tumpukkan ke -1 (-1=tumpukkan kosong)
{
T.atas=-1;
}
int kosong()//fungsi kosong ->
untuk mengecek apakah tunpukan kosong atau tidak
{
if(T.atas==-1)//jika t atas
bernilai -1 maka fungsi kosong bernilai benar, jika tidak fungsi kosong
bernilai salah
return 1;
else
return 0;
}
int penuh()//isfull digunakan
untuk mengecek apakah tumpukkan sudah penuh atau belum
{
if(T.atas==max-1)//fungsi penuh
bernilai benar jika posisi t atas max -1 = t atas (4-1)= t atas [3]
return 1;
else
return 0;
}
void input(int data)//untuk
menginputkan
{
if(kosong()==1)
{
T.atas++;//T.atas=T.atas+1;
T.data[T.atas]=data;
cout<<"Data
"<<T.data[T.atas]<<" masuk ke stack";
}
else if(penuh()==0)//apakah data
belum penuh
{
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--;//T.atas=T.atas-1;
}
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()//prusedur untuk
membersihkan tumpukkan
{
T.atas=-1;
cout<<"Tumpukan
kosong!";
}
//--------------------------------------->
int main()
{
int pil,data;
awal();
do
{
system("cls");
cout<<"1. Input
(PUSH)\n2. Hapus (POP)\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:top();
// break;
// case 6:isempty();
// break;
// case 7:Noel()
//break
case 8:
cout<<"Terimakasih,
tekan enter untuk keluar";
}
getch();
}
while(pil!=5);
}
|
SUMBER :
0 komentar:
Posting Komentar