Ketika user:
Contoh:
Struktur data linear dengan prinsip:
Data terakhir masuk → keluar pertama
Stack memiliki:
int stack[5];
int top = -1;
top menunjuk elemen teratas.
push(10)
push(20)
push(30)
Isi stack:
30 ← top 20 10
if(top == MAX-1)
penuh
else
{
top++;
stack[top] = data;
}
pop()
Data keluar: 30
Isi stack:
20 ← top 10
if(top == -1)
kosong
else
top--;
Melihat data paling atas tanpa menghapus
stack[top]
Stack penuh tetapi masih push
Stack kosong tetapi masih pop
Simulasikan:
Push 5, Push 7, Push 9, Pop, Push 2.
Langkah:
5 5 7 5 7 9 5 7 5 7 2
Top: 2
#define MAX 5
int stack[MAX];
int top = -1;
void push(int data)
{
if(top == MAX-1)
{
cout << "Stack penuh";
}
else
{
top++;
stack[top] = data;
}
}
void pop()
{
if(top == -1)
{
cout << "Stack kosong";
}
else
{
top--;
}
}
int peek()
{
return stack[top];
}
for(int i = top; i >= 0; i--)
{
cout << stack[i] << endl;
}
#include <iostream>
using namespace std;
#define MAX 5
int stack[MAX];
int top = -1;
1. Push 2. Pop 3. Peek 4. Tampilkan 5. Exit
Operasi:
Push 10 Push 20 Push 30 Pop
Apa isi akhir stack?
Bagaimana aplikasi mengingat sejarah perubahan?
Ketika fungsi dipanggil:
| Array | Linked List |
|---|---|
| Ukuran tetap | Dinamis |
| Lebih sederhana | Lebih fleksibel |
| Cepat | Hemat ruang |
Tentukan isi akhir stack:
Push 1 Push 2 Push 3 Pop Push 4 Pop
Jika stack: Last In First Out
Maka queue: First In First Out
Buat program stack:
1. Push 2. Pop 3. Peek 4. Display
Ketentuan: Gunakan array, Ada pengecekan overflow & underflow