際際滷

際際滷Share a Scribd company logo
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
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.
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
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!
Gambar 5. Ilustrasi fungsi Print
Sintaks program fungsi Print:
void TampilStack(){
for(int i=tumpuk.top;i>=0;i--){
printf("Data : %sn",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:
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
Hasil akhir, 15 dan tinggalkan pada top stack dan selesai menghitung

More Related Content

Stack tumpukan

  • 1. 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
  • 2. 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.
  • 3. 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
  • 4. 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!
  • 5. Gambar 5. Ilustrasi fungsi Print Sintaks program fungsi Print: void TampilStack(){ for(int i=tumpuk.top;i>=0;i--){ printf("Data : %sn",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:
  • 6. 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
  • 7. Hasil akhir, 15 dan tinggalkan pada top stack dan selesai menghitung