STACK adalah suatu bentuk khusus dari linear list di mana operasi  penyisipan dan penghapusan atas elemen-elemennya hanya dapat dilakukan pada satu sisi saja yaitu posisi akhir dari list. Posisi ini disebut puncak atau disebut sebagai “TOP(S)”.
Prinsip Stack adalah LIFO ( Last In First Out ) atau Terakhir masuk pertama keluar. Setiap elemen tidak dapat dikeluarkan (POP keluar) sebelum semua elemen diatasnya dikeluarkan. Elemen teratas (puncak) dari stack dinotasikan sebagai TOP(S)
Misal diberikan stack S sebagai berikut :
S= [ S2,S2,………, ST ] è maka TOP(S) = ST
Untuk menunjukkan  jumlah elemen suatu stack digunakan notasi NOEL(S).
Dari stack diatas  maka NOEL(S) = T.
NOEL(S) menghasilkan nilai integer.

Jika diberikan sebuah stack S = [A,B,C,D] maka stack S ini dapat digambarkan sebagai berikut :
Operasi Pada Stack:

1.     CREATE (STACK)
  Operator ini berfungsi untuk membuat sebuah stack kosong (menjadi hampa) dan didefinisikan bahwa:
NOEL (CREATE (S)) = 0 dan
TOP (CREATE(S)) = null / tidak terdefinisi
2.     ISEMPTY(STACK)
 Operator ini berfungsi  untuk menentukan apakah suatu stack adalah stack kosong (hampa) atau tidak. Operasinya akan bernilai boolean dengan definisi sebagai berikut :
 ISEMPTY(S) =  True, jika S adalah stack kosong atau NOEL(S) = 0
       False, jika S bukan stack kosong atau NOEL(S) ¹ 0
 Catatan : ISEMPTY(CREATE(S)) = true
3.     PUSH(ELEMEN,STACK)
  • Operator ini berfungsi untuk menambahkan satu elemen ke dalam stack . Notasi yang digunakan adalah  PUSH(E,S)
           Artinya : menambahkan elemen E ke dalam stack S
  • Elemen yang baru masuk ini akan menempati posisi TOP jadi TOP(PUSH(E,S)) = E
  • Akibat dari operasi ini jumlah elemen dalam stack akan bertambah, artinya NOEL (S) menjadi lebih besar atau stack menjadi tidak kosong (ISEMPTY(PUSH(E,S)) = false )

4.     POP(STACK)

  • Operator ini berfungsi untuk mengeluarkan satu elemen dari dalam stack, notasinya POP(S)
  • Elemen yang keluar dari dalam stack adalah elemen yang berada pada posisi TOP.
  •  Akibat dari operasi ini jumlah elemen stack akan berkurang atau NOEL(S) berkurang 1 dan elemen pada posisi TOP akan berubah.
  • Operator ini tidak dapat digunakan pada stack kosong, artinya POP(CREATE(S)) = error condition dan POP(PUSH(E,S)) = S
Catatan : TOP(PUSH(E,S)) = E

Contoh Program:
*Source Code dibawah ini di compile menggunakan Code::Blocks
#include <iostream>
#include <conio.h>
using namespace std;
int *Stack, top=0, maxSize;
void createStack();
void push();
void pop();
void dispStack();
//MAIN
int main()
{
int choice;
while(choice !=5)
{
cout<<"\n\n1. Buat Stack Baru"
<<"\n2. Push"
<<"\n3. Pop"
<<"\n4. Tampilkan Isi Stack"
<<"\n5. Exit\n\n";
cin>>choice;
switch (choice)
{
case 1:
createStack();
break;
case 2:
push();
break;
case 3:
pop();
break;
case 4:
dispStack();
break;
case 5:
break;
case 6:
cout<<"\n Pilihan Yang Anda Masukkan Salah. Siliahkan Pilih Pilihan Yang Tertera Diatas";
break;
}
}
}
// CREATE STACK
void createStack()
{
cout<<"\n Masukkan Nilai Max Stack: ";
cin>>maxSize;
Stack=new int[maxSize];
}
// PUSH
void push()
{
if(top>=(maxSize))
{
cout<<"\n Tidak Ada Data Yang Bisa di Push";
}
else
{
top++;
cout<<"\nMasukkan Data Yang Akan dimasukkan Ke Dalam Stack: ";
cin>>Stack[top];
}
}
// POP
void pop()
{
if(top<1)
{
cout<<"Tidak Ada Data Yang Bisa Di Pop, Stack IsEmpty";
}
else
{
cout<<"\nData Yang Di Pop Adalah: "<<Stack[top--];
}
}
// MENAMPILKAN QUEUE
void dispStack()
{
if(top<1)
{
cout<<endl;
cout<<"Stack IsEmpty, Tidak Ada Data Yang Bisa Ditampilkan";
}
else
{
cout<<endl;
cout<<"Data Yang Ada Dalam Stack Adalah: ";
for(int i = top;i>=1;i--)
{
cout<<endl;
cout<<Stack[i];
}
}
getch();
}
view raw Stack hosted with ❤ by GitHub

Tampilan Program:

0 komentar:

Post a Comment

:) :)) ;(( :-) =)) ;( ;-( :d :-d @-) :p :o :>) (o) [-( :-? (p) :-s (m) 8-) :-t :-b b-( :-# =p~ $-) (b) (f) x-) (k) (h) (c) cheer
Click to see the code!
To insert emoticon you must added at least one space before the code.

 
UB Mansion © 2013. All Rights Reserved. Powered by Blogger
Top