Anda di halaman 1dari 33

STRUKTUR DATA

STACK (TUMPUKAN)
OUTLINE
• Create stack
• Push stack
• Pop stack
• Display stack
• Peek
• Destroy
• Change
Definisi Stack
• Stack adalah suatu tumpukan dari data. Konsep utamanya adalah LIFO
(Last In First Out), data yang terakhir masuk dalam stack akan menjadi
data pertama yang dikeluarkan dari stack
Stack = tumpukan
• Suatu susunan koleksi data dimana data dapat ditambahkan dan dihapus
selalu dilakukan pada bagian akhir data, yang disebut dengan top of stack
• “data yang terakhir masuk ke dalam stack akan menjadi yang pertama
keluar dari stack“
• Stack punya batas maksimal banyak data
• Stack dapat diimplementasikan dengan array dan linked list
Compo Compo

VCD Compo

VCD VCD

TV TV TV TV
Penerapan Stack
• Tombol back dan next
• Tombol undo dan redo
• Pemisahan ekspresi aritmatika
• Penyelesaian pencarian rute labirin
Operasi Stack
1. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
3. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
4. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
5. Peek : fungsi untuk melihat atau mengintip data di posisi tertentu
6. Change : mengubah data di posisi tertentu
7. Display : menampilkan semua data pada stack
8. Destroy : menghapus semua data pada stack
Max = 5
Stack with Array Stack[4]
Stack[3]
• Definisikan Stack dengan menggunakan suatu Stack[2]
struct Stack[1]
• Definisikan konstanta MAX untuk menyimpan Stack[0]
maksimum isi stack.
• Top adalah suatu variabel penanda dalam Stack Top = 0
yang menunjukkan elemen teratas data Stack.
• Elemen Stack adalah array data dan top untuk
41
menandakan posisi data teratas O
1
3
U I
32 2 N
T 2

23 3
1

14 4
0
Inisialisasi dan Fungsi push Data
• Inisialisasi sebuah data bertipe Array,
• Inisialisasi nilai maksimum data, misal : kapasitas 5,
=> maks = 5
• Inisialisasi top (posisi data teratas) = 0
• Fungsi Boolean isFull() dan isEmpty() untuk
mengecek kondisi stack, penuh atau kosong
Ilustrasi Stack pada saat inisialisasi

Top = 0
Ilustrasi Stack pada kondisi Full
Ilustrasi push Data

Top = Top + 1 = 5
Top = 4
Fungsi push Data
• Fungsi Push untuk menambahkan
data ke dalam stack
• Produk[top] : array produk dengan
indeks top, berfungsi untuk
menampung data sesuai posisi top
saat itu (mulai dari 0)
• Gunakan increment untuk mengatur
posisi top.
Ilustrasi pop Data

top

Top = top -1
Fungsi pop Data
• Fungsi Pop untuk mengeluarkan
data dari dalam stack
• Produk[top-1] : array produk dengan
indeks top-1, berfungsi untuk
mengambil data paling atas.
• Gunakan decrement untuk
mengatur posisi top.
Menampilkan Data
Looping Secara decrement
Program Stack (11)
Fungsi Peek
• Digunakan untuk melihat posisi tertentu dari sebuah stack
• Posisi merupakah variable penunjuk yang ingin dilihat atau diintip, mulai dari
data teratas (data posisi 1 adalah data paling atas)
• Index merupakan index array (mulai dar 0)
Pemanggilan fungsi peek
Fungsi Change()

• Digunakan untuk mengubah isi


data pada elemen data tertentu
• Gunakan parameter data sebagai
data baru, dan posisi untuk posisi
elemen stack yang akan diubah.
Stack Awal

Stack setelah
diubah
Fungsi Destroy()
• Digunakan untuk
menghapus stack
• Looping dari elemen
indeks ke 0
• Top kembali ke kondisi
semula, top = 0;
Stack dengan Linked List
• Gunakan Double Linked List, karena kita akan memanggil data dari top
posisi paling atas.
• Fungsi count() untuk mneghitung jumlah elemen data yang ada di
dalam stack
• Variabel max untuk menghitung banyaknya data yang dapat
ditampung oleh Stack
• Jika count() == max, maka stack dalam kondisi penuh.
• Jika count() == 0, lakukan create data (nodeBaru)
• Jika count() != 0, lakukan push data (nodeBaru) ke dalam linked list
Head Tail
node1 node2 node3 node4

prev next
Deklarasi stack dalam bentuk struct
Deklarasi fungsi count(), isFull() dan
isEmpty()
Fungsi push Data
Fungsi Display Data
Fungsi Pop Data

Akan menampilkan
stack penuh
Fungsi Peek
• Gunakan variable
bantu : posisi, yang
dimulai dari data
paling atas
Fungsi Ubah()
Fungsi Hapus()
Soal Praktikum
• 1. Admin Akademik program studi ingin menginputkan data
mahasiswa. Data mahasiswa diinputkan berdasarkan abjad
mahasiswa secara acending. Nama mahasiswa dapat dipanggil apabila
nama mahasiswa sebelumnya sudah dipanggil. Data mahasiswa ini
mampu menyimpan 20 data mahasiswa
Instruksi Pengerjaan
• 1. Buatlah struktur data mahasiswa (berupa stack) menggunakan
array yang menyimpan info mahasiswa mencakup nama mahasiswa
dan nim
• 2. Buatlah prosedur untuk memasukkan identitas mahasiswa ke data
mahasiswa
• 3. Buatlah program untuk memanggil data mahasiswa

Anda mungkin juga menyukai