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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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(); | |
} |
Tampilan Program:
Baca Juga
Pemrograman C++: Variable
Pemrograman C++: Array 1 Dimensi dan 2 Dimensi
Pemrograman C++: Stack
Pemrograman C++: Queue
Pemrograman C++: Sorting
Pemrograman C++: Searching
Referensi:
Materi Dosen Struktur Data Stikom Bali
Pemrograman C++: Variable
Pemrograman C++: Array 1 Dimensi dan 2 Dimensi
Pemrograman C++: Stack
Pemrograman C++: Queue
Pemrograman C++: Sorting
Pemrograman C++: Searching
Referensi:
Materi Dosen Struktur Data Stikom Bali
0 komentar:
Post a Comment
Click to see the code!
To insert emoticon you must added at least one space before the code.