Stack tumpukan

7
BAB 4 STACK (TUMPUKAN) 1. Tujuan Instruksional Umum a. Mahasiswa mampu melakukan perancangan aplikasi menggunakan Struktur Stact (tumpukan) b. Mahasiswa mampu melakukan analisis pada algoritma Stack yang dibuat c. Mahasiswa mampu mengimplementasikan algoritma Stack pada sebuah aplikasi secara tepat dan efisien 2. Tujuan Instruksional Khusus a. Mahasiswa mampu menjelaskan mengenai algoritma Stack b. Mahasiswa mampu membuat dan mendeklarasikan struktur algoritma Stack c. Mahasiswa mampu menerapkan dan mengimplementasikan algoritma Stack Pengertian Stack Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman, bersifat LIFO (Last In First Out) dimana benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Compo juga. Operasi-operasi/fungsi Stack Push : digunakan untuk menambah item pada stack pada tumpukan paling atas pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas Clear : digunakan untuk mengosongkan stack IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh Stack dengan struktur array 1. Mendefinisikan Stack dengan menggunakan struct 2. Mendefinisikan MAX_STACK untuk maksimum isi stack 3. Membuatlah variabel array data sebagai implementasi stack secara nyata 4. Mendeklarasikan operasi-operasi/function di atas dan buat implemetasinya Deklarasi STACK dengan struct dan array data

Transcript of Stack tumpukan

Page 1: Stack tumpukan

BAB 4 STACK (TUMPUKAN)

1. Tujuan Instruksional Umum a. Mahasiswa mampu melakukan perancangan aplikasi menggunakan Struktur

Stact (tumpukan) b. Mahasiswa mampu melakukan analisis pada algoritma Stack yang dibuat c. Mahasiswa mampu mengimplementasikan algoritma Stack pada sebuah aplikasi

secara tepat dan efisien 2. Tujuan Instruksional Khusus

a. Mahasiswa mampu menjelaskan mengenai algoritma Stack b. Mahasiswa mampu membuat dan mendeklarasikan struktur algoritma Stack c. Mahasiswa mampu menerapkan dan mengimplementasikan algoritma Stack

Pengertian Stack Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman, bersifat LIFO (Last In First Out) dimana benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Compo juga.

Operasi-operasi/fungsi Stack Push : digunakan untuk menambah item pada stack pada tumpukan paling atas pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas Clear : digunakan untuk mengosongkan stack IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh Stack dengan struktur array

1. Mendefinisikan Stack dengan menggunakan struct 2. Mendefinisikan MAX_STACK untuk maksimum isi stack 3. Membuatlah variabel array data sebagai implementasi stack secara nyata 4. Mendeklarasikan operasi-operasi/function di atas dan buat implemetasinya

Deklarasi STACK dengan struct dan array data

Page 2: Stack tumpukan

typedef struct STACK{ int top; char data[10][10]; //misalkan : data adalah array of string //berjumlah 10 data, masing-masing string //menampung maksimal 10 karakter };

Deklarasi/buat variabel dari struct STACK tumpuk;

Deklarasi MAX_STACK #define MAX_STACK 10 //hati-hati mulai dari 0 jadi 0-9

Inisialisasi Stack Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG! Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH! Ilustrasi stack pada saat inisialisasi:

Gambar 1 Inisialisasi Stack

Fungsi IsFull Untuk memeriksa apakah stack sudah penuh? Dengan cara memeriksa top

of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full.

Page 3: Stack tumpukan

Gambar 2. Ilustrasi Fungsi IsFull

Fungsi Push Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack. Tambah satu (increment) nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan indeks top of stack setelah ditambah satu (diincrement)

Gambar 3. Ilustrasi dan sintaks fungsi Push

Page 4: Stack tumpukan

Fungsi Pop Untuk mengambil elemen teratas dari stack.Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack sehingga jumlah elemen stack berkurang.

Gambar 4. Ilustrasi fungsi POP Sintaks program fungsi POP

Fungsi Print Untuk menampilkan semua elemen-elemen stack. Dengan cara looping semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang kecil!

Page 5: Stack tumpukan

Gambar 5. Ilustrasi fungsi Print

Sintaks program fungsi Print:

void TampilStack(){ for(int i=tumpuk.top;i>=0;i--){

printf("Data : %s\n",tumpuk.data[i]); }

}

STUDI KASUS

Pembuatan Kalkulator SCIENTIFIC, misalkan operasi: 3 + 2 * 5 Operasi di atas disebut notasi infiks, notasi infiks tersebut harus diubah lebih dahulu menjadi notas postfix 3 + 2 * 5 notasi postfiksnya adalah 2 5 * 3 +. Kemudian diimplementasikan stack sebagai berikut: Stack Soal (dalam bentuk postfiks) dan Stack Hasil (masih kosong):

Gambar 6 Ilustrasi kalkulator SCIENTIFIC

Algoritma Pop Stack Soal:

1. Jika berupa operand, maka masukkan ke Stack Hasil 2. Jika berupa operator, maka:

Page 6: Stack tumpukan

a. Pop nilai pertama dari Stack Hasil b. Pop nilai kedua dari Stack Hasil c. Lakukan operasi sesuai dengan operator yang didapat.

Misalnya untuk contoh di atas:

Gambar 7 Ilustrasi algoritma pop 5 dan 2 pada stack

Operator * di pop dari Stack Soal, pop Stack Hasil dua kali, yaitu 5 dan 2 kemudian, simpan 5 ke dalam variabel misalnya a, dan 2 ke dalam variabel misalnya b. Lalu lakukan operasi sesuai dengan operatornya, b <operator> a. Jadi b * a, yaitu 2 * 5 kemudian hasilnya disimpan lagi ke dalam StackHasil

Gambar 8. Ilustrasialgoritma pop 3 dan 8 pada stack

Kemudian lakukan langkah yang sama, sampai selesai. Pada contoh: operator + dipop dari Stack Soal, pop Stack Hasil dua kali, yaitu 3, disimpan pada variabel a, dan 2, disimpan pada variabel b. Kemudian lakukan operasi sesuai dengan operatornya, b <operator> a. Jadi b + a, yaitu 8 + 3 = 11. Contoh, cara lain: Penghitungan: ((1 + 2) * 4) + 3 dapat ditulis berurut ke bawah secara postfix dengan keuntungan tanpa preseden pada aturan dan pokok masalahnya:

1 2 + 4 * 3 + persamaan di masukan dari kiri ke kanan menggunakan stack:

1. push operand yang dihtung dan 2. pop two operand dan nilai hasil operasi penghitungan. 3. push hasil penghitungan

dengan langkah seperti diilustrasikan berikut ini

Page 7: Stack tumpukan

Hasil akhir, 15 dan tinggalkan pada top stack dan selesai menghitung