Pengertian dan Contoh Sederhana tentang Stack dan Queue
STACK (Tumpukan) dan Queue (Antrian)
Pada kesempatan kali ini, kita akan belajar bersama tentang Stack atau Tumpukan dan Queue atau Antrian. Stack dan Queue ini, berkaitan dengan Struktur Data dalam sebuah aplikasi namun bisa juga dalam kehidupan sehari-hari kita. Stack dan Queue merupakan fungsi yang biasanya diimplementasikan pada program, tidak terkecuali Pemrograman Java. Untuk itu, sebelum membahas program sederhana Stack dan Queue menggunakan Pemrograman Java, kita simak terlebih dahulu pengertian dan penjelasan dari kedua fungsi tersebut dibawah ini.
- STACK/Tumpukkan
Stack adalah kumpulan suatu elemen dimana hanya elemen yang baru dimasukkan yang dapat diakses atau dilihat. Stack merupakan perintah pengumpulan data secara linear yang menyusun data seperti tumpukan dan bersifat Last In First Out(LIFO) yang berarti data yang terakhir masuk adalah data yang pertama keluar. Contoh dalam Kehidupan sehari-hari : - Setumpuk koran, dimana koran yang paling terakhir ditambahkan dan ditaruh diatas adalah koran yang dapat dilihat
- Seseorang yang sedang mencuci piring, piring yang dicuci pertama pasti akan diletakan dibawah dan akan terus berlanjut sampai tumpukan piring yang terakhir dicuci. Lalu, piring pasti akan di taruh di rak piring dan pasti yang diambil adalah piring yang paling atas yaitu piring yang terakhir dicuci dan yang pertama dicuci pasti akan terakhir.
- Tumpukan Batu bata yang sedang diturunkan dari mobil pasti yang diambil adalah batu bata yang paling atas, padahal batu bata pertama yang dimasukkan kedalam mobil adalah batu bata yang berada dibawahnya.
- Elemen TOP/Puncak diketahui
- Penyisipan dan Penghapusan selalu dilakukan di TOP
- LIFO(Last In First Out) Pemanfaatan Stack yaitu :
- Perhitungan Ekspresi Aritmatitika (posfix)
- Algoritma Backtracking (runut balik)
- Algoritma Rekursif
- Push untuk memasukkan atau menginputkan data
- Pop untuk mengeluarkan data
- IsFull untuk mengetahui jika tumpikan sudah penuh
- IsEmpety untuk mengetahui tumpukan yang kosong, dan
- Clear untuk menghapus seluruh data atau membersihkan data.
- QUEUE/Antrian
package stack;
import java.lang.reflect.Array;
public class Stack {
public T[]array;
public int pointer;
public Stack(Class classname){
array=(T[]) Array.newInstance(classname, 10);
pointer = -1;
}
public void push(T item){
array[++pointer]=item;
}
public T pop(){
return array[pointer--];
}
public static void main(String[] args){
Stack a = new Stack(Integer.class);
a.push(5);
a.push(6);
a.push(7);
System.out.println(a.pop());
System.out.println(a.pop());
}
}
import java.lang.reflect.Array;
public class Stack
public T[]array;
public int pointer;
public Stack(Class classname){
array=(T[]) Array.newInstance(classname, 10);
pointer = -1;
}
public void push(T item){
array[++pointer]=item;
}
public T pop(){
return array[pointer--];
}
public static void main(String[] args){
Stack
a.push(5);
a.push(6);
a.push(7);
System.out.println(a.pop());
System.out.println(a.pop());
}
}
Untuk contoh hasil Output dari kode di atas sebagai berikut dibawah ini :
Secara Harfiah, queue artinya adalah antriain. Queue adalah salah satu contoh penerapan aplikasi dari pembuatan double linked list yang sering ditemui dalam kehidupan sehari-hari. Queue ialah Struktur Data yang mempunyai sifat FIFO(First In First Out) yang artinya, data yang pertama kali masuk merupakan data yang akan keluar paing awal. Contohnya saat mengantri dalam loket untuk membeli tiket. Istilah Enqueue cukup sering dipakai seseorang ketika masuk antrian. Yang datang terlebih pertama, maka akan dilayani terlebih dahulu. Dan istilah untuk seseorang keluar dari antrian adalah Dequeue.
Queue mempunyai beberapa fungsi operasi diantaranya yaitu :
- EnQueue untuk Memasukkan data kedalam Antrian
- DeQueue untuk Mengeluarkan data kedalam Antrian.
- IsFull untuk memeriksa apakah antrian Penuh
- IsEmpety untuk memeriksa apakah antrian Kosong
- Clear untuk Menghapus seluruh Antrian.
- Saat seseorang mengantri di sebuah Bank
- Antrian Loket pembelian sebuah tiket Pesawat, Kereta Api, dan lainnya
- Pembayaran Tol dan sebagainya.
Contoh dalam Pembelian Tiket Kereta Api :
- Enqueue : Seseorang membeli tiket melalui tempat pembayaran tiket yang disediakan.
- Dequeue : Setelah membeli tiket, langsung menuju tempat tunggu Kereta Api, dengan sebelumnya petugas memeriksa cek tiket tersebut.
- Clear : Pembeli tiket tersebut telah terhapus dari antrian karena sudah melewati pembayaran administrasi tersebut.
- IsEmpty : Petugas tiket Kereta Api melihat tidak ada lagi yang ingin membeli tiket kereta.
- IsFull : Petugas Tiket Kereta Api melihat masih ada pembeli tiket kereta.
Untuk contoh programnya adalah sebagai berikut :
package queue;
import java.lang.reflect.Array;
import java.util.Scanner;
public class Queue {
public Integer pointer;
private final Integer sizeArray;
private final T[] element;
public Queue(Class namaClass, Integer size) {
pointer = -1;
sizeArray = size;
element = (T[]) Array.newInstance(namaClass, size);
}
public void enqueue(T data)
{
if(pointer < (sizeArray - 1))
{
pointer++;
element[pointer] = data;
}
else
{
System.out.println("Queue Sudah Penuh");
}
}
public void dequeue()
{
if(pointer >= 0) {
for (Integer i = 0; i <= pointer; i++) {
element[i] = element[i + 1];
}
pointer--;
}
else
{
System.out.println("Queue Sudah Kosong");
}
}
public void viewQueue()
{
for(Integer i = 0; i <= pointer; i++)
{
System.out.print(element[i]);
System.out.print(" ");
}
}
public void clearQueue()
{
pointer = -1;
}
public static void main(String[] args)
{
Integer pil;
Queue queue = new Queue<>(String.class, 10);
Scanner scanner = new Scanner(System.in);
do
{
queue.viewQueue();
System.out.println();
System.out.println("1. Enqueue");
System.out.println("2. Dequeue");
System.out.println("3. Clear");
System.out.println("4. Exit");
pil = scanner.nextInt();
if(pil > 0 && pil < 4)
{
switch (pil) {
case 1:
String data;
System.out.print("Masukkan Data: ");
data = scanner.next();
queue.enqueue(data);
break;
case 2:
queue.dequeue();
break;
case 3:
queue.clearQueue();
break;
default:
break;
}
}
else
break;
}while(true);
}
}
import java.lang.reflect.Array;
import java.util.Scanner;
public class Queue
public Integer pointer;
private final Integer sizeArray;
private final T[] element;
public Queue(Class namaClass, Integer size) {
pointer = -1;
sizeArray = size;
element = (T[]) Array.newInstance(namaClass, size);
}
public void enqueue(T data)
{
if(pointer < (sizeArray - 1))
{
pointer++;
element[pointer] = data;
}
else
{
System.out.println("Queue Sudah Penuh");
}
}
public void dequeue()
{
if(pointer >= 0) {
for (Integer i = 0; i <= pointer; i++) {
element[i] = element[i + 1];
}
pointer--;
}
else
{
System.out.println("Queue Sudah Kosong");
}
}
public void viewQueue()
{
for(Integer i = 0; i <= pointer; i++)
{
System.out.print(element[i]);
System.out.print(" ");
}
}
public void clearQueue()
{
pointer = -1;
}
public static void main(String[] args)
{
Integer pil;
Queue
Scanner scanner = new Scanner(System.in);
do
{
queue.viewQueue();
System.out.println();
System.out.println("1. Enqueue");
System.out.println("2. Dequeue");
System.out.println("3. Clear");
System.out.println("4. Exit");
pil = scanner.nextInt();
if(pil > 0 && pil < 4)
{
switch (pil) {
case 1:
String data;
System.out.print("Masukkan Data: ");
data = scanner.next();
queue.enqueue(data);
break;
case 2:
queue.dequeue();
break;
case 3:
queue.clearQueue();
break;
default:
break;
}
}
else
break;
}while(true);
}
}
Untuk contoh hasil Output dari kode di atas sebagai berikut dibawah ini :
Demikian postingan saya kali ini tentang Stack dan Queue. Semoga bermanfaat dan berguna bagi kita semua. Untuk kekurangan dan kesalahan dalam artikel ini, saya mohon maaf, karena saya juga masih belajar bersama. Atas kunjungan kalian saya ucapkan terima kasih. Jangan lupa untuk tinggalkan komentar yang membangun dibawah postingan ini.
Comments