Senin, 04 Maret 2019

Algoritma Pemrograman 2 Stack

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

Cari Blog Ini