1. Pengertian Stack
Stack bisa
diartikan sebagai suatu kumpulan data yang seolah-olah ada
data yang diletakkan diatas data yang lain. Perlu dingat, di dalam stack kita
bisa menambahkan (menyisipkan) dan mengambil (menghapus) data melalui ujung
yang sama yang disebut sebagai ujung atas stack (top of stack). Stack mempunyai
sifat LIFO (Last In, First Out), yaitu yang terakhir masuk adalah yang
pertama keluar.
Bentuk penyajian
stack bisa menggunakan tipe data array, tetapi sebenarnya penyajian stack
menggunakan array adalah kurang tepat karena banyaknya elemen dalam array
adalah statis, sedangkan dalam stack banyaknya elemen sangat bervariasi atau
dinamis. Meskipun demikian, array bisa digunakan untuk penyajian stack, tetapi
dengan anggapan bahwa banyaknya elemen maksimal dari suatu stack tidak tidak
melebihi batas maksimum banyaknya elemen array. Pada suatu saat, ukuran stack
akan sama dengan ukuran aaray. Bila diteruskan menambah data, maka akan terjadi
overflow. Oleh karena itu, perlu ditambahkan data untuk mencatat ujung stack.
2. Ada dua macam penyajian stack menggunakan
array, yaitu single stack dan double stack.
a. Single Stack
Stack adalah
himpunan elemen yang berurutan dimana bagian paling atas tempat elemen baru
tersebut disisipkan disebut top dan
pada bagian itu pula elemen tersebut akan diambil dan dihapus dari stack.
Karena stack mengalami proses penyisipan dan penghapusan maka stack merupakan
salah satu struktur data dinamis. Karena elemen terakhir akan menjadi elemen
pertama yang diambil maka stack disebut lifo (last
in first out).
Operasi penyisipan
elemen disebut push sedangkan
pangambilan elemen disebut pop.
Sebelum operasi pop dilakukan, harus diperiksa dahulu apakah stack tersebut
kosong menggunakan fungsi empty().
Jika stack tersebut kosong, maka fungsi empty() akan
mengembalikan nilai TRUE dan FALSE jika sebaliknya. Berikut adalah ilustrasi
operasi push dan pop yang dilakukan pada suatu stack. Jika ke dalam suatu stack
disisipkan huruf A, B, dan C maka stack akan tampak seperti gambar 1.(a). Jika
disisipkan 2 elemen lagi yaitu D dan E, stack akan tampak seperti gambar 1.(b).
Dan, elemen E dihapus dari stack, maka kondisinya akan seperti gambar 1.(c).
E
|
||||
D
|
D
|
|||
C
|
C
|
C
|
||
B
|
B
|
B
|
||
A
|
A
|
A
|
||
(a)
|
(b)
|
(c)
|
Gambar 1. (a). Stack berisi
3 elemen (b).
Stack setelah 2 elemen disisipkan
(c). Stack setelah 1 elemen di hapus
(c). Stack setelah 1 elemen di hapus
b. Double Stack
double stack merupakan bentuk pengembangan
dari single stacj dengan maksud untuk menghemat memori. Prinsip dari double
stack adalah dalam satu array terdapat dua stack,
TOP
1 TOP 2
STACK 1
|
STACK 2
|
Gambar 2.
stack 1 bergerak ke kanan sedangakan stack
2 bergerak kekiri. Double stack dikatakan penuh apabila top 1 bertemu dengan
top 2.
deklarasi umum :
#define Max 50
#define true 1
#define false 0
Char stack[Max];
Int top1;
Int top2;
Operasi Pada Stack
Operasi-operasi Dasar
pada stack adalah sebagai berikut:
1. Operasi data abstrak STACK
struct STACK { //Membuat jenis data abstract 'STACK'
int top; //inisialisasi variable
float data[4]; //tipe data
};
float dta;
struct STACK stackbaru; //struktur stackbaru
2. Fungsi yang melakukan pengecekan apakah stack dalam kondisi kosong
bool isempty() { //menanyakan : kosongkah?
if(stackbaru.top==-1) return true;
else return false; //perintah kondisi
false
}
3.
Fungsi
yang melakukan pengecekan apakah stack dalam kondisi penuh
bool isfull(){
//Menanyakan : penuhkah?
if (stackbaru.top == maxstack) return
true; //perintah kondisi if
else return false; //perintah kondisi
else
4.
Fungsi
untuk menghapus seluruh stack
void clear (){ //fungsi hapus
top = -1;
}
5. Fungsi untuk mencetak isi stack
void print(){ //Mencetak stack
for (int i=0; i<=top; i++){ //perintah perulangan
cout <<stackbaru.data[i]<<" "; //mencetak hasil
}
Monday, 10 October 2022 at 13:15:00 GMT-7
or433 onrunningcloudsuomi,asics löparskor,keen colombia,mizunoadidasi,asics outlet,caterpillar werkschoenen,altra shoes nz,gymshark sale nz,teniskyaltra mr737