LINEAR LIST
Linear
List merupakan suatu struktur data yang dimana himpunan tersebut terurut. Misal
didefinisikan suatu linear list A yang terdiri atas T buah elemen sebagai
berikut :
A = [a1, a2, .........., aT]
Jika
T = 0, maka A dikatakan sebagai “Null List”.
Suatu elemen dari sembarang
posisi pada linear list A dapat dihilangkan. Dan sebaliknya, suatu elemen baru
dapat dimasukkan ke dalam list dan dapat menempati sembarang posisi pada list
tersebut. Jadi suatu linear list dapat berkurang atau bertambah setiap saat.
DEFINISI STACK
Stack
merupakan suatu bentuk khusus dari linear list di mana operasi penyisipan dan
penghapusan atas elemen-elemennya hanya dapat dilakukan pada satu sisi saja
yang disebut sebagai “TOP”.
Misalnya diberikan Stack S
sebagai berikut :
S = [ S1, S2, .........., ST ] maka TOP(S) = ST.
Untuk
menunjukkan jumlah elemen suatu stack digunakan notasi NOEL. Dari stack
di atas, maka NOEL(S) = T. kemudian, jika diberikan sebuah stack S =
[A,B,C,D], maka stack S ini dapat digambar.
OPERASI DASAR PADA STACK
Terdapat empat operasi dasar yang didefinisikan pada
stack, yaitu :
1. CREATE(stack)
2. ISEMPTY(stack)
3. PUSH(elemen,stack)
4. POP(stack)
CREATE
Operator
ini berfungsi untuk membuat sebuah stack kosong dan didefinisikan bahwa :
NOEL(CREATE(S)) = 0 dan
TOP(CREATE(S)) = null
ISEMPTY
Operator
ini berfungsi untuk menentukan apakah suatu stack merupakan stack kosong.
Operasinya akan bernilai boolean, dengan definisi sebagai berikut :
ISEMPTY(S) =
true, jika S adalah stack kosong
= false, jika S bukan stack kosong
atau
ISEMPTY(S)
= true, jika NOEL(S) = 0
= false, jika NOEL(S) 0
Catatan
: ISEMPTY(CREATE(S)) = true.
PUSH
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).
POP
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 dan
elemen pada posisi TOP akan berubah. Operator POP ini tidak dapat digunakan
pada stack kosong, artinya :
POP(CREATE(S)) = error condition
Catatan : TOP(PUSH(E,S))
= E
Contoh Program Stack
//program STACK
#include <iostream.h>
#include <conio.h>
#include <string.h>
struct
{
char data [15][100], max [15];
int i,j;
} stack;
void isi () // push untuk memasukan
data
{
stack.i++;
cout<<"masukan data: ";
cin>>stack.max;
strcpy (stack.data[stack.i],stack.max);
}
void buang () // pop untuk mengambil
data
{
if (stack.i>0)
{
cout<<"data yang
terambil: "<<stack.data[stack.i]<<endl;
stack.i--; stack.j--;
}
else
cout<<"tak ada data yang
terambil"<<endl;
}
void muncul (int n)//print untuk
menampilkan data
{
if (stack.j>0)
{
for (int e=n; e>=1; e--)
{
cout<<stack.data[e]<<endl;
}
}
else
cout<<"tak ada data
tersimpan"<<endl;
}
void hapus () // clear untuk
menghapus data
{
stack.j=0; stack.i=0;
}
void main ()
{
int n,plh;
ayo:
clrscr();
cout<<"contoh program stack
(tumpukan)\n\n";
cout<<"maksimal tumpukan
data: "; cin>>n;
stack.data[n];
stack.i=0;
stack.j=0;
pusing:
clrscr();
cout<<"\n1. push \n2. pop
\n3. print \n4. clear \n5. quit \n";
cout<<"\npilih :";
cin>>plh;
cout<<"\n";
if (plh==1)
{
if (stack.j<n)
{
stack.j++; isi();
}
else
{
cout<<"tumpukan
penuh"<<endl; getch();
}
goto pusing;
}
else if (plh==2)
{
buang(); getch(); goto pusing;
}
else if (plh==3)
{
muncul (stack.i); getch(); goto
pusing;
}
else if (plh==4)
{
hapus(); getch(); goto pusing;
}
else if (plh==5)
{
getch(); goto ayo;
}
else
{
cout<<"input yang
anda masukan salah !!!";
getch(); goto ayo;
}
}
Sumber:
Tidak ada komentar:
Posting Komentar