STACK
Stack atau tumpukan sebagai list dimana penambahan dan pengambilan elemen hanya dilakukan pada satu sisi yang disebut top (puncak) dari stack.
Dua operasi dasar pada stack adalah PUSH (operasi pemasukan elemen ke dalam stack) dan POP (operasi pengambilan satu elemen dari dalam stack). Stack terdiri dari 2 jenis yaitu :
1. Single Stack
2. Double Stack
a. Single Stack
Single Stack dapat direpresentasikan menggunakan array satu dimensi. Pada single stack berlaku aturan LIFO (Last In First Out), yaitu elemen yang terakhir masuk akan pertama kali diambil atau dilayani.
ALGORITMA PUSH
if (Top < n-1)
{
Top = Top + 1;
S[Top] = x;
}
else
cout<<“Stack Penuh”;
ALGORITMA POP
if (Top > -1)
{
x = S[Top];
Top = Top - 1;
}
else
cout<<“Stack Kosong”;
Contoh program stack
#include<iostream.h>
#define n 10
void main()
{
int S[n];
int x,top;
top=-1;
while (top<=n-1)
{
cout<<"Inputkan isi stack : ";
cin>>x;
top=top+1;
S[top]=x;
}
cout<<"Isi stack : "<<endl;
while (top>=0)
{
x=S[top];
cout<<x<<" ";
top=top-1;
}
}
b. Double Stack
Double Stack atau Stack Ganda adalah stack yang hanya terdiri dari dua single stack. Bila stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus melalui salah satu arah.
Algoritma PUSH1 (mengisi Stack1)
· Periksa apakah Stack1 BISA DIISI
if (Top2 – Top1 > 1)
{ Top1 = Top1 + 1;
S[Top1] = x;
}
else
cout<<“Stack Penuh”;
Algoritma POP1 (mengambil isi Stack1)
· Periksa apakah Stack1 ADA ISINYA
if (Top1 > -1)
{ x = S[Top1];
Top1 = Top1 - 1;
}
else
cout<<“Stack Kosong”;
Algoritma PUSH2 (mengisi Stack2)
· Periksa apakah Stack2 BISA DIISI
if (Top2 – Top1 > 1)
{ Top2 = Top2 - 1;
S[Top2] = x;
}
else
cout<<“Stack Penuh”;
Algoritma POP2 (mengambil isi Stack2)
· Periksa apakah Stack2 ADA ISINYA
if (Top2 < n)
{ x = S[Top2];
Top2 = Top2 + 1;
}
else
cout<<“Stack Kosong”;
referensi : materi dari ppt. teori struktur data/ STIKOM-Bali
Coding dari dosen praktikum struktur data/ STIKOM-Bali/ dengan sedikit perubahan
Tidak ada komentar:
Posting Komentar