Kamis, 04 Juni 2015

PENGERTIAN STACK

Perngertian Stack


                   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 : 

10 Langkah Belajar  logika dan algoritma, menggunakan bahasa c dan c++

 










Tidak ada komentar:

Posting Komentar