Algoritma dan Struktur Data
STACK

Oleh
Nama : Gusnia Syukriyawati
NIM : 115090607111036
Asisten : 1. Eka Mahargiyak
: 2. Ahmad Azeri
Program Teknologi Informasi dan Ilmu Komputer
Universitas Brawijaya
Malang
2012
BAB I
Pendahuluan
I.1 Dasar Teori
Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula. Lihat gambar 1.

Gambar 1. Macam-macam tumpukan
Ada 2 operasi paling dasar dari stack yang dapat dilakukan, yaitu :
1. Operasi push yaitu operasi menambahkan elemen pada urutan terakhir (paling atas).
2. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dan menghapus elemen tersebut dari stack.
STACK
Oleh
Nama : Gusnia Syukriyawati
NIM : 115090607111036
Asisten : 1. Eka Mahargiyak
: 2. Ahmad Azeri
Program Teknologi Informasi dan Ilmu Komputer
Universitas Brawijaya
Malang
2012
BAB I
Pendahuluan
I.1 Dasar Teori
Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula. Lihat gambar 1.
Gambar 1. Macam-macam tumpukan
Ada 2 operasi paling dasar dari stack yang dapat dilakukan, yaitu :
1. Operasi push yaitu operasi menambahkan elemen pada urutan terakhir (paling atas).
2. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dan menghapus elemen tersebut dari stack.
Sebagai contoh, misalkah ada data sebagai berikut : 1 3 5 6, maka data tersebut dapat tersimpan dalam bentuk sebagai berikut :
Selain operasi dasar stack (push dan stack), ada lagi operasi lain yang dapat terjadi dalam stack yaitu :
1. Proses deklarasi yaitu proses pendeklarasian stack.
2. Proses isempty yaitu proses pemeriksaan apakah stack dalam keadaan kosong.
3. Proses isfull yaitu proses pemeriksaan apakah stack telah penuh.
4. Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan pemberian nilai untuk top.
Pendeklarasian stack
Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori. Pendeklarasian stack yang menggunakan array memiliki beberapa bagian yaitu
- top yang menunjuk posisi data terakhir (top)
- elemen yang berisi data yang ada dalam stack. Bagian inilah yang berbentuk array.
- maks_elemen yaitu variable yang menunjuk maksimal banyaknya elemen dalam stack.
Operasi IsEmpty
Operasi ini digunakan untuk memeriksa apakah stack dalam keadaan kosong. Operasi ini penting dilakukan dalam proses pop. Ketika suatu stack dalam keadaan kosong, maka proses pop tidak bisa dilakukan. Operasi IsEmpty pada stack yang menggunakan array. dilakukan hanya dengan memeriksa field top. Jika top bernilai 0 (untuk elemen yang dimulai dengan index 1) atau top bernilai -1 (untuk elemen yang dimulai dengan index 0), maka berarti stack dalam keadaan empty (kosong) yang akan me-return-kan true (1) dan jika tidak berarti stack mempunyai isi dan me-return-kan nilai false (0).
Operasi IsFull
Operasi ini berguna untuk memeriksa keadaan stack apakah sudah penuh atau belum. Operasi ini akan menghasilkan nilai true (1) jika stack telah penuh dan akan menghasilkan nilai false (0) jika stack masih bisa ditambah. Operasi ini akan memberikan nilai true (1) jika field top sama dengan field maks_elemen (untuk array yang elemennya dimulai dari posisi 1) atau top sama dengan maks_elemen-1 (untuk array yang elemennya dimulai dari posisi 0).
Operasi Push
Operasi push adalah operasi dasar dari stack. Operasi ini berguna untuk menambah suatu elemen data baru pada stack dan disimpan pada posisi top yang akan mengakibatkan posisi top akan berubah.
Langkah operasi push dalam array adalah dengan :
- Periksa apakah stack penuh (isfull). Jika bernilai false/0 (tidak penuh) maka proses push dilaksanakan dan jika pemeriksaan ini bernilai true/1 (stack penuh), maka proses push digagalkan.
- Proses push-nya sendiri adalah dengan menambah field top dengan 1, kemudian elemen pada posisi top diisi dengan elemen data baru. Untuk lebih jelas, perhatikan lagi gambar 4 mengenai representasi stack dengan array.
Operasi Pop
Operasi pop adalah salah satu operasi paling dasar dari stack. Operasi ini berguna untuk mengambil elemen terakhir (top) dan kemudian menghapus elemen tersebut sehingga posisi top akan berpindah. Operasi ini biasanya dibuat dalam bentuk function yang me- return-kan nilai sesuai data yang ada di top.
Langkah operasi pop pada stack yang menggunakan array adalah terlebih dahulu memeriksa apakah stack sedang keadaan kosong, jika tidak kosong maka data diambil pada posisi yang ditunjuk oleh posisi top, kemudian simpan dalam variable baru dengan nama data, kemudian posisi top - 1, kemudian nilai pada variable data di-return-kan ke function.
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
Representasi stack dalam pemrograman, dapat dilakukan dengan 2 cara yaitu :
1. Representasi stack dengan array
2. Representasi stack dengan single linked listSebagai contoh representasi kedua cara tersebut dengan operasi yang dilakukan adalah push(1), push(2), pop, push(5), push(8), pos.
BAB II
Pembahasan
II.1 Source Code
No Stack.java
package Prak7;
public class Stack {
private int size;
private int top;
public int[] data;
public Stack(int n) {
top = -1;
size = n;
data = new int [size];
}
public boolean isFull() {
return (top == size -1 ) ? true : false;
}
public boolean isEmpty() {
return (top == -1) ? true : false;
}
public void push(int dt) {
if (!isFull()) {
data[++top] = dt;
}
}
public int pop() {
int hasil = -999;
if (!isEmpty()) {
hasil = data[top--];
}
return hasil;
}
public int top() {
int dt = 0;
if (!isEmpty()) {
dt = data[top];
}
return dt;
}
}
No StackFrame.java
Package Prak7;
import java.awt.Color;
import javax.swing.JOptionPane;
public class StackFrame extends javax.swing.JFrame {
private int n = 1;
Stack stk;
public StackFrame() {
super("Gusnia Syukriyawati - 115090607111036");
initComponents();
stk = new Stack(6);
}
@SuppressWarnings("unchecked")
Generated Code
private void jPushActionPerformed(java.awt.event.ActionEvent evt) {
stk.push(n);
if (stk.top() == 1) {
a.setBackground(Color.yellow);
}
else if (stk.top() == 2) {
b.setBackground(Color.orange);
}
else if (stk.top() == 3) {
c.setBackground(Color.red);
}
else if (stk.top() == 4) {
d.setBackground(Color.green);
}
else if (stk.top() == 5) {
e.setBackground(Color.blue);
}
else if (stk.top() == 6) {
f.setBackground(Color.black);
}
if (n < 6) {
n++;
}
// TODO add your handling code here:
}
private void jPopActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (stk.top() == 1) {
a.setBackground(Color.white);
}
else if (stk.top() == 2) {
b.setBackground(Color.white);
}
else if (stk.top() == 3) {
c.setBackground(Color.white);
}
else if (stk.top() == 4) {
d.setBackground(Color.white);
}
else if (stk.top() == 5) {
e.setBackground(Color.white);
}
else if (stk.top() == 6) {
f.setBackground(Color.white);
}
stk.pop();
if (n > 1) {
n--;
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new StackFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTextField a;
private javax.swing.JTextField b;
private javax.swing.JTextField c;
private javax.swing.JTextField d;
private javax.swing.JTextField e;
private javax.swing.JTextField f;
private javax.swing.JLabel jLabel1;
private javax.swing.JButton jPop;
private javax.swing.JButton jPush;
// End of variables declaration
}
II.2 Output
Di push 4 kali
Di push 1 kali dari screenshot sebelumnya.
Di pop 2kali dari screenshot sebelumnya
BAB III
Penutup
III.1 Kesimpulan
1. Stack atau tumpukan merupakan data yang sifatnya terurut yang dapat dilakukan operasi penyisipan dan penghapusan pada ujung data.
2. Stack sering disebut LIFO (Last in First Out) yaiu=tu elemen yang paling terakhir disisipkan menjadi elemen yang paling dulu di ambil.
III.2 Saran
• Mengajarkan materi secara bertahap hingga mahasiswa mengerti.
• Menerangkan dan membahas tugas yang sudah di kumpulkan jika masih ada yang belum dimengerti.
Daftar Pustaka
1. nafnafi.files.wordpress.com/2010/10/stack2.pdf pada tanggal 3 desember 2012
2. Daniel F Stubbs & Neil W. Webre (1985). Data Structures with Abstract Data Type and Pascal. Brook/ Cole Publishing Company
3. Aaron M. Tanenbaum, Yedidyah Langsam, Moshe J Augenstein (1990), Data Structures Using C, Prentice Hall.
