SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Pertemuan 6 Struktur Data, Algoritma dan Pemrograman
Pertemuan 6 Struktur Data, Algoritma dan PemrogramanPertemuan 6 Struktur Data, Algoritma dan Pemrograman
Pertemuan 6 Struktur Data, Algoritma dan PemrogramanPrasetyo Adi
 
Teori bahasa formal dan Otomata
Teori bahasa formal dan OtomataTeori bahasa formal dan Otomata
Teori bahasa formal dan OtomataRisal Fahmi
 
8. Multi List (Struktur Data)
8. Multi List (Struktur Data)8. Multi List (Struktur Data)
8. Multi List (Struktur Data)Kelinci Coklat
 
Materi sorting(pengurutan)-Dasar-Dasar Pemprograman
Materi sorting(pengurutan)-Dasar-Dasar PemprogramanMateri sorting(pengurutan)-Dasar-Dasar Pemprograman
Materi sorting(pengurutan)-Dasar-Dasar PemprogramanReskidtc
 
TATA KALIMAT BAHASA INDONESIA
TATA KALIMAT BAHASA INDONESIATATA KALIMAT BAHASA INDONESIA
TATA KALIMAT BAHASA INDONESIAA-ttiitudEd Kuu
 
Array Dimensi banyak struktur data pertemuan ke 3
Array Dimensi banyak struktur data pertemuan ke 3Array Dimensi banyak struktur data pertemuan ke 3
Array Dimensi banyak struktur data pertemuan ke 3said zulhelmi
 
Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur dataAsep Jaenudin
 
Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)eka pandu cynthia
 
Algoritma dan Struktur Data - Stack
Algoritma dan Struktur Data - StackAlgoritma dan Struktur Data - Stack
Algoritma dan Struktur Data - StackKuliahKita
 
Kecerdasan Buatan (AI)
Kecerdasan Buatan (AI)Kecerdasan Buatan (AI)
Kecerdasan Buatan (AI)Farichah Riha
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)Kelinci Coklat
 
PERULANGAN (LOOPING)
PERULANGAN (LOOPING)PERULANGAN (LOOPING)
PERULANGAN (LOOPING)Ahmad Givari
 
Aritmatika dan statistika ms. excel
Aritmatika dan statistika ms. excelAritmatika dan statistika ms. excel
Aritmatika dan statistika ms. excelAnis Ilahi
 

Tendances (20)

Pertemuan 6 Struktur Data, Algoritma dan Pemrograman
Pertemuan 6 Struktur Data, Algoritma dan PemrogramanPertemuan 6 Struktur Data, Algoritma dan Pemrograman
Pertemuan 6 Struktur Data, Algoritma dan Pemrograman
 
Teori bahasa formal dan Otomata
Teori bahasa formal dan OtomataTeori bahasa formal dan Otomata
Teori bahasa formal dan Otomata
 
8. Multi List (Struktur Data)
8. Multi List (Struktur Data)8. Multi List (Struktur Data)
8. Multi List (Struktur Data)
 
Sorting ppt
Sorting ppt Sorting ppt
Sorting ppt
 
Materi sorting(pengurutan)-Dasar-Dasar Pemprograman
Materi sorting(pengurutan)-Dasar-Dasar PemprogramanMateri sorting(pengurutan)-Dasar-Dasar Pemprograman
Materi sorting(pengurutan)-Dasar-Dasar Pemprograman
 
Implementasi Teknik Kompresi Teks Huffman
Implementasi Teknik Kompresi Teks HuffmanImplementasi Teknik Kompresi Teks Huffman
Implementasi Teknik Kompresi Teks Huffman
 
TATA KALIMAT BAHASA INDONESIA
TATA KALIMAT BAHASA INDONESIATATA KALIMAT BAHASA INDONESIA
TATA KALIMAT BAHASA INDONESIA
 
Pertemuan 5 Stack atau Tumpukan
Pertemuan 5 Stack atau TumpukanPertemuan 5 Stack atau Tumpukan
Pertemuan 5 Stack atau Tumpukan
 
Stack atau tumpukan
Stack atau tumpukanStack atau tumpukan
Stack atau tumpukan
 
Array Dimensi banyak struktur data pertemuan ke 3
Array Dimensi banyak struktur data pertemuan ke 3Array Dimensi banyak struktur data pertemuan ke 3
Array Dimensi banyak struktur data pertemuan ke 3
 
Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur data
 
Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)
 
01 02-pseudocode
01 02-pseudocode01 02-pseudocode
01 02-pseudocode
 
Algoritma dan Struktur Data - Stack
Algoritma dan Struktur Data - StackAlgoritma dan Struktur Data - Stack
Algoritma dan Struktur Data - Stack
 
Resume praktikum 6 stack
Resume praktikum 6 stackResume praktikum 6 stack
Resume praktikum 6 stack
 
Kecerdasan Buatan (AI)
Kecerdasan Buatan (AI)Kecerdasan Buatan (AI)
Kecerdasan Buatan (AI)
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
 
Himpunan matematika diskrit
Himpunan matematika diskritHimpunan matematika diskrit
Himpunan matematika diskrit
 
PERULANGAN (LOOPING)
PERULANGAN (LOOPING)PERULANGAN (LOOPING)
PERULANGAN (LOOPING)
 
Aritmatika dan statistika ms. excel
Aritmatika dan statistika ms. excelAritmatika dan statistika ms. excel
Aritmatika dan statistika ms. excel
 

En vedette

อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์Ekkachai Juneg
 
ข้อสอบ7วิชาสามัญ เคมี
ข้อสอบ7วิชาสามัญ เคมีข้อสอบ7วิชาสามัญ เคมี
ข้อสอบ7วิชาสามัญ เคมีRuetaitid Khamentdee
 
Psycho video report
Psycho video reportPsycho video report
Psycho video reportMoon Leong
 
Psychology journal
Psychology journalPsychology journal
Psychology journalMoon Leong
 
One group intranet at Castellum
One group intranet at CastellumOne group intranet at Castellum
One group intranet at CastellumIntranätverk
 
T1. solar system 3, plates, orbits, periods, light,
T1. solar system 3, plates, orbits, periods, light,T1. solar system 3, plates, orbits, periods, light,
T1. solar system 3, plates, orbits, periods, light,jaume2014
 
Mi paso por el valera 2
Mi paso por el valera 2Mi paso por el valera 2
Mi paso por el valera 2sextomemola
 
2014 cwc 10 steps to editing final
2014 cwc   10 steps to editing final2014 cwc   10 steps to editing final
2014 cwc 10 steps to editing finalIola Goulton
 
scVictoria04 presentatie
scVictoria04 presentatiescVictoria04 presentatie
scVictoria04 presentatiescVictoria04
 
Searching for solutions
Searching for solutionsSearching for solutions
Searching for solutionsIntranätverk
 
Roma & Il Vaticano
Roma & Il VaticanoRoma & Il Vaticano
Roma & Il Vaticanodschmickle
 
Liao chi yi_pf_0226dft
Liao chi yi_pf_0226dftLiao chi yi_pf_0226dft
Liao chi yi_pf_0226dftChi Yi Liao
 
Non linear powerpoint byron lowe
Non linear powerpoint byron loweNon linear powerpoint byron lowe
Non linear powerpoint byron lowebyronlowe2323
 
Final report pharmacy clinical intervention
Final report   pharmacy clinical interventionFinal report   pharmacy clinical intervention
Final report pharmacy clinical interventionamanda8984
 
Gör det enkelt att göra det enkelt att HITTA
Gör det enkelt att göra det enkelt att HITTAGör det enkelt att göra det enkelt att HITTA
Gör det enkelt att göra det enkelt att HITTAIntranätverk
 
Полиуретан Для Горнодобывающей отрасли.
Полиуретан Для Горнодобывающей отрасли.Полиуретан Для Горнодобывающей отрасли.
Полиуретан Для Горнодобывающей отрасли.Pavel Zmeev
 

En vedette (20)

อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์
 
Ahmc presentation june 2014 for healthcare private investment conference
Ahmc  presentation june 2014 for healthcare private investment conferenceAhmc  presentation june 2014 for healthcare private investment conference
Ahmc presentation june 2014 for healthcare private investment conference
 
ข้อสอบ7วิชาสามัญ เคมี
ข้อสอบ7วิชาสามัญ เคมีข้อสอบ7วิชาสามัญ เคมี
ข้อสอบ7วิชาสามัญ เคมี
 
Psycho video report
Psycho video reportPsycho video report
Psycho video report
 
Psychology journal
Psychology journalPsychology journal
Psychology journal
 
Dresden #6
Dresden #6Dresden #6
Dresden #6
 
One group intranet at Castellum
One group intranet at CastellumOne group intranet at Castellum
One group intranet at Castellum
 
Kharkiv #1
Kharkiv #1Kharkiv #1
Kharkiv #1
 
T1. solar system 3, plates, orbits, periods, light,
T1. solar system 3, plates, orbits, periods, light,T1. solar system 3, plates, orbits, periods, light,
T1. solar system 3, plates, orbits, periods, light,
 
Mi paso por el valera 2
Mi paso por el valera 2Mi paso por el valera 2
Mi paso por el valera 2
 
2014 cwc 10 steps to editing final
2014 cwc   10 steps to editing final2014 cwc   10 steps to editing final
2014 cwc 10 steps to editing final
 
scVictoria04 presentatie
scVictoria04 presentatiescVictoria04 presentatie
scVictoria04 presentatie
 
Searching for solutions
Searching for solutionsSearching for solutions
Searching for solutions
 
Roma & Il Vaticano
Roma & Il VaticanoRoma & Il Vaticano
Roma & Il Vaticano
 
Liao chi yi_pf_0226dft
Liao chi yi_pf_0226dftLiao chi yi_pf_0226dft
Liao chi yi_pf_0226dft
 
Non linear powerpoint byron lowe
Non linear powerpoint byron loweNon linear powerpoint byron lowe
Non linear powerpoint byron lowe
 
Final report pharmacy clinical intervention
Final report   pharmacy clinical interventionFinal report   pharmacy clinical intervention
Final report pharmacy clinical intervention
 
Gör det enkelt att göra det enkelt att HITTA
Gör det enkelt att göra det enkelt att HITTAGör det enkelt att göra det enkelt att HITTA
Gör det enkelt att göra det enkelt att HITTA
 
2006 10 1
2006 10 12006 10 1
2006 10 1
 
Полиуретан Для Горнодобывающей отрасли.
Полиуретан Для Горнодобывающей отрасли.Полиуретан Для Горнодобывающей отрасли.
Полиуретан Для Горнодобывающей отрасли.
 

Similaire à Stack tumpukan (20)

Stack_Queue.pdf
Stack_Queue.pdfStack_Queue.pdf
Stack_Queue.pdf
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Bab 4 stack (tumpukan)
Bab 4 stack (tumpukan)Bab 4 stack (tumpukan)
Bab 4 stack (tumpukan)
 
Bab 4 stack_tumpukan_
Bab 4 stack_tumpukan_Bab 4 stack_tumpukan_
Bab 4 stack_tumpukan_
 
Tistrukdat4
Tistrukdat4Tistrukdat4
Tistrukdat4
 
Bab 3 stack (tumpukan)
Bab 3 stack (tumpukan)Bab 3 stack (tumpukan)
Bab 3 stack (tumpukan)
 
Stack
StackStack
Stack
 
Bab viii stack
Bab viii   stackBab viii   stack
Bab viii stack
 
5 STACK
5 STACK5 STACK
5 STACK
 
STACK.pptx
STACK.pptxSTACK.pptx
STACK.pptx
 
Tugas
TugasTugas
Tugas
 
Tugas
TugasTugas
Tugas
 
Pertemuan 4 ok
Pertemuan 4 okPertemuan 4 ok
Pertemuan 4 ok
 
STACK .pdf
STACK .pdfSTACK .pdf
STACK .pdf
 
Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)
 
Chapter 4a stack
Chapter 4a   stackChapter 4a   stack
Chapter 4a stack
 
Laporan praktikum modul viii
Laporan praktikum modul viiiLaporan praktikum modul viii
Laporan praktikum modul viii
 
Pertemuan 5 revisijan2013-mhs
Pertemuan 5 revisijan2013-mhsPertemuan 5 revisijan2013-mhs
Pertemuan 5 revisijan2013-mhs
 
Stack & queue by stanly maarende
Stack & queue by stanly maarendeStack & queue by stanly maarende
Stack & queue by stanly maarende
 

Plus de muissyahril

Sd pertemuan 1 & 2
Sd   pertemuan 1 & 2Sd   pertemuan 1 & 2
Sd pertemuan 1 & 2muissyahril
 
Sd pertemuan 3 & 4
Sd   pertemuan 3 & 4Sd   pertemuan 3 & 4
Sd pertemuan 3 & 4muissyahril
 
Sd pertemuan 5 & 6
Sd   pertemuan 5 & 6Sd   pertemuan 5 & 6
Sd pertemuan 5 & 6muissyahril
 
Sd pertemuan 5 & 6
Sd   pertemuan 5 & 6Sd   pertemuan 5 & 6
Sd pertemuan 5 & 6muissyahril
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)muissyahril
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)muissyahril
 
Sd pertemuan 1 & 2
Sd   pertemuan 1 & 2Sd   pertemuan 1 & 2
Sd pertemuan 1 & 2muissyahril
 

Plus de muissyahril (9)

Sd pertemuan 1 & 2
Sd   pertemuan 1 & 2Sd   pertemuan 1 & 2
Sd pertemuan 1 & 2
 
Sd pertemuan 3 & 4
Sd   pertemuan 3 & 4Sd   pertemuan 3 & 4
Sd pertemuan 3 & 4
 
Sd pertemuan 5 & 6
Sd   pertemuan 5 & 6Sd   pertemuan 5 & 6
Sd pertemuan 5 & 6
 
Queue antrian
Queue antrian Queue antrian
Queue antrian
 
Queue antrian
Queue antrian Queue antrian
Queue antrian
 
Sd pertemuan 5 & 6
Sd   pertemuan 5 & 6Sd   pertemuan 5 & 6
Sd pertemuan 5 & 6
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)
 
Sd pertemuan 1 & 2
Sd   pertemuan 1 & 2Sd   pertemuan 1 & 2
Sd pertemuan 1 & 2
 

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