PERTEMUAN 13
Struktur Data dan Algoritma
Stack dan Implementasinya
πŸ“šKonsep Stack
⚑Operasi Push & Pop
πŸ’ΎImplementasi Array
πŸ”Studi Kasus: Undo & Redo
Tujuan
Tujuan Pembelajaran
  1. Menjelaskan konsep stack dan prinsip LIFO
  2. Menggunakan operasi dasar stack
  3. Mengimplementasikan stack dengan array
  4. Menganalisis kasus Undo & Redo menggunakan dua stack
  5. Membandingkan stack dengan struktur linear lain
Review
Review Pertemuan Sebelumnya

Sorting Algorithms

  • Bubble Sort
  • Selection Sort
  • Insertion Sort
  • Merge Sort
  • Shell Sort
Kesamaan: Sama-sama mengelola data dan membutuhkan kontrol urutan.
Problem
Bagaimana fitur β€œUndo” bekerja?

Ketika user:

⌨️mengetik
❌menghapus
🎨menggambar
Mengapa aksi terakhir bisa dibatalkan duluan?
Analogi
Analogi Stack

Stack = Tumpukan

Contoh:

  • Tumpukan piring
  • Tumpukan buku
  • Tumpukan kardus
Yang terakhir ditaruh:
Yang pertama diambil
Definisi
Definisi Stack

Struktur data linear dengan prinsip:

LIFO

Last In First Out

Data terakhir masuk → keluar pertama

Ilustrasi
Ilustrasi LIFO

Urutan operasi

  1. Push A
  2. Push B
  3. Push C

Saat Pop, Keluar dulu:

  • C
  • B
  • A
Struktur
Struktur Stack

Stack memiliki:

  • Data
  • Top
int stack[5];
int top = -1;

top menunjuk elemen teratas.

Operasi
Operasi Dasar Stack
  1. Push
  2. Pop
  3. Peek / Top
  4. isEmpty
  5. isFull
Push
Push = Menambah Data
push(10)
push(20)
push(30)

Isi stack:

30 ← top
20
10
Algoritma
Algoritma Push
if(top == MAX-1)
    penuh
else
{
    top++;
    stack[top] = data;
}
Pop
Pop = Mengambil Data Teratas
pop()

Data keluar: 30

Isi stack:

20 ← top
10
Algoritma
Algoritma Pop
if(top == -1)
    kosong
else
    top--;
Peek
Peek / Top

Melihat data paling atas tanpa menghapus

stack[top]
Kondisi
Underflow & Overflow

Overflow

Stack penuh tetapi masih push

Underflow

Stack kosong tetapi masih pop

Interaktif
Simulasi Manual
Siap simulasi.

Simulasikan:
Push 5, Push 7, Push 9, Pop, Push 2.

Jawaban
Jawaban Simulasi

Langkah:

5
5 7
5 7 9
5 7
5 7 2

Top: 2

Array
Implementasi Array

Struktur Dasar

#define MAX 5

int stack[MAX];
int top = -1;
Kode
Fungsi Push
void push(int data)
{
    if(top == MAX-1)
    {
        cout << "Stack penuh";
    }
    else
    {
        top++;
        stack[top] = data;
    }
}
Kode
Fungsi Pop
void pop()
{
    if(top == -1)
    {
        cout << "Stack kosong";
    }
    else
    {
        top--;
    }
}
Kode
Fungsi Peek
int peek()
{
    return stack[top];
}
Kode
Menampilkan Stack
for(int i = top; i >= 0; i--)
{
    cout << stack[i] << endl;
}
Lengkap
Demo Program Lengkap
#include <iostream>
using namespace std;

#define MAX 5

int stack[MAX];
int top = -1;
Menu
Demo Menu
1. Push
2. Pop
3. Peek
4. Tampilkan
5. Exit
Trace
Live Trace Program

Operasi:

Push 10
Push 20
Push 30
Pop

Apa isi akhir stack?

Studi Kasus
Undo & Redo

Bagaimana aplikasi mengingat sejarah perubahan?

πŸ”™Undo Stack: Menyimpan riwayat aksi.
πŸ”œRedo Stack: Menyimpan aksi yang baru saja di-undo.
Setiap aksi baru akan menghapus (clear) Redo Stack.
Logika
Logika Undo/Redo
  1. Aksi Baru: Push state lama ke Undo, Clear Redo.
  2. Undo: Push state sekarang ke Redo, Pop dari Undo jadi state baru.
  3. Redo: Push state sekarang ke Undo, Pop dari Redo jadi state baru.
Prinsip LIFO memastikan aksi paling akhir adalah yang pertama di-undo.
Simulator
Undo/Redo Visualizer
Undo Stack
Redo Stack
Ketik teks lalu klik 'Simpan State'.
Aplikasi
Aplikasi Stack
  • Undo/Redo
  • Browser History
  • Call Stack Function
  • Parsing Compiler
  • DFS Algorithm
Call Stack
Stack pada Function Call

Ketika fungsi dipanggil:

  • data fungsi disimpan
  • kembali sesuai urutan stack
Vs
Array vs Linked List
Array Linked List
Ukuran tetap Dinamis
Lebih sederhana Lebih fleksibel
Cepat Hemat ruang
Kelebihan
Kelebihan Stack
  • Sederhana
  • Cepat
  • Cocok untuk data berurutan
  • Kontrol operasi jelas
Kelemahan
Kelemahan Stack
  • Akses terbatas
  • Tidak fleksibel (array)
  • Hanya elemen atas yang bisa diakses
Latihan
Latihan Cepat

Tentukan isi akhir stack:

Push 1
Push 2
Push 3
Pop
Push 4
Pop
Diskusi
Diskusi

Kapan stack lebih cocok dibanding array biasa?

Rangkuman
Rangkuman
βœ…Konsep stack
βœ…LIFO
βœ…Push & Pop
βœ…Implementasi array
βœ…Studi kasus: Undo/Redo
Next
Preview Berikutnya

Jika stack: Last In First Out

Maka queue: First In First Out

Tugas
Tugas Rumah

Buat program stack:

1. Push
2. Pop
3. Peek
4. Display

Ketentuan: Gunakan array, Ada pengecekan overflow & underflow

Tutup
Pertanyaan?

β€œData terakhir masuk, keluar pertama.”

STACK = LIFO