STACK
Stack (Tumpukan)
•Suatu susunan
koleksi
data dimana
data dapat
ditambahkan
dan
dihapus
selalu dilakukan
pada
bagian
akhir
data, yang disebut
dengat
top of stack
•Stack bersifat
LIFO (Last In First Out)
Operasi
Stack
Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
Pop : untuk mengambil item pada stack pada tumpukan paling atas
Clear : untuk mengosongkan stack
Is Empty : untuk mengecek apakah stack sudah kosong
isFull : untuk mengecek apakah stack sudah penuh
Pop : untuk mengambil item pada stack pada tumpukan paling atas
Clear : untuk mengosongkan stack
Is Empty : untuk mengecek apakah stack sudah kosong
isFull : untuk mengecek apakah stack sudah penuh
Stack with Array of Struct
•Definisikan
stack dengan
menggunakan
satu
struct
•Definisikan konstanta
MAX_STACK untuk
menyimpan
maksimum
isi
stack
•Elemen struct
stack adalah
array data dan
top untuk
menandakan
posisi
data teratas
•Buatlah variabel
tumpuk
sebagai
implementasi
dari
struct
stack
•Deklarasikan
operasi-operasi/function
diatas
dan
buat
implementasinya
Program Stack
•Contoh deklarasi
MAX_STACK
#define MAX_STACK 10
•Contoh deklarasi
STACK dengan
struct
dan
array data
typedef
struct
STACK {
int top;
int
data[10]; };
•Deklarasi/buat
variabel
dan
struct
STACK tumpuk;
Program Stack (2)
•Pada mulanya
isi
top dengan
-1, karena
aaray
dalam
bahasa
C dimulai
dari
0, yang berarti
bahwa
data stack adalah
kosong
•Top adalah
suatu
variabel
penanda
dalam
stack yang menunjukan
elemen
teratas
data stack sekarang.
Top of stack akan selalu
bergerak
hingga
MAX of STACK yang menyebabkan
stack penuh
Program Stack (3)
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
maka
belum
full
Program Stack (4)
Ilustrasi
stack pada
kondisi
full
Program Stack (5)
Fungsi
IsEmpty
•Untuk memeriksa
apakah
stack masih
kosong
•Dengan cara
memeriksa
top of stack, jika masih
-1 maka
berarti
data stack masih
kosong
Program Stack (6)
•Untuk memasukan
elemen
ke
data stack. Data yang diinputkan selalu
menjadi
elemen
teratas
stack
•Jika data belum
penuh,
tambah
satu
(increment) nilai top of stack lebih
dahulu
setiap
kali ada
penambahan
dalam
array data stack. Isikan data baru
ke
stack berdasarkan
indeks
top of stack yang telah di-increment
sebelumnya
•Jika tidak,
output “penuh
Program Stack (7)
Program Stack (8)
Fungsi
Pop
•Untuk mengambil
data stack yang terletak
paling aas
•Tampilkan terlebih
dahulu
nilai
elemen
teratas
dengan
mengakses
indeksnya
sesuai dengan
top of stacknya,
baru
dilakukan
di-decrement
nilai
top of stacknya
sehingga
jumlah
elemen
stack berkurang
Program Stack (9)
Program Stack (10)
Fungsi
Print
•Untuk menampilkan
semua
elemen-elemen
data stack
•Dengan cara
me-loop semua
nilai
array secara
terbalik,
karena
kita
harus
mengakses
dadeks
array tertinggi
dahulu
baru
ke
indeks
yang lebih
kecil
Program Stack (11)
Fungsi
peek
•Digunakan untuk
melihat
top of stack
int
peek (){
return tumpuk.data{tumpuk.top};
}
program stack
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package stackqueue;
import java.util.LinkedList;
import java.util.Queue;
/**
*
* @author ACER
*/
public class StackQueue {
Queue<Integer> q = new LinkedList<Integer>();
// Push operation
void push(int val)
{
// get previous size of queue
int size = q.size();
// Add current element
q.add(val);
// Pop (or Dequeue) all previous
// elements and put them after current
// element
for (int i = 0; i < size; i++)
{
// this will add front element into
// rear of queue
int x = q.remove();
q.add(x);
}
}
// Removes the top element
int pop()
{
if (q.isEmpty())
{
System.out.println("No elements");
return -1;
}
int x = q.remove();
return x;
}
// Returns top of stack
int top()
{
if (q.isEmpty())
return -1;
return q.peek();
}
// Returns true if Stack is empty else false
boolean isEmpty()
{
return q.isEmpty();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
StackQueue s = new StackQueue();
s.push(10);
s.push(20);
System.out.println("Top element :" + s.top());
s.pop();
s.push(30);
s.pop();
System.out.println("Top element :" + s.top());
// TODO code application logic here
}
}
https://youtu.be/pj3sgA8YVF0
https://github.com/fanihusna109/STACK-FANI
https://www.istn.ac.id/
program stack
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package stackqueue;
import java.util.LinkedList;
import java.util.Queue;
/**
*
* @author ACER
*/
public class StackQueue {
Queue<Integer> q = new LinkedList<Integer>();
// Push operation
void push(int val)
{
// get previous size of queue
int size = q.size();
// Add current element
q.add(val);
// Pop (or Dequeue) all previous
// elements and put them after current
// element
for (int i = 0; i < size; i++)
{
// this will add front element into
// rear of queue
int x = q.remove();
q.add(x);
}
}
// Removes the top element
int pop()
{
if (q.isEmpty())
{
System.out.println("No elements");
return -1;
}
int x = q.remove();
return x;
}
// Returns top of stack
int top()
{
if (q.isEmpty())
return -1;
return q.peek();
}
// Returns true if Stack is empty else false
boolean isEmpty()
{
return q.isEmpty();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
StackQueue s = new StackQueue();
s.push(10);
s.push(20);
System.out.println("Top element :" + s.top());
s.pop();
s.push(30);
s.pop();
System.out.println("Top element :" + s.top());
// TODO code application logic here
}
}
https://youtu.be/pj3sgA8YVF0
https://github.com/fanihusna109/STACK-FANI
https://www.istn.ac.id/
Tidak ada komentar:
Posting Komentar