Pengertian dan Contoh Sederhana tentang Stack dan Queue

STACK (Tumpukan) dan Queue (Antrian)

Hasil gambar untuk stack dan queue
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. 


  1. 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 :
    1. Setumpuk koran, dimana koran yang paling terakhir ditambahkan dan ditaruh diatas adalah koran yang dapat dilihat
    2. 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.
    3. 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.
    Jadi, Stack yaitu sebuah koleksi objek yang menggunakan prinsip LIFO(Last In First Out) dan Stack dapat diimplementasikan sebagai representasi berkait atau kontinyu. Ciri-Ciri Stack diantaranya :
    • 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
    Operasi Stack yang biasa digunakan diantaranya yaitu :
    1. Push untuk memasukkan atau menginputkan data
    2. Pop  untuk mengeluarkan data
    3. IsFull untuk mengetahui jika tumpikan sudah penuh
    4. IsEmpety untuk mengetahui tumpukan yang kosong, dan
    5. Clear untuk menghapus seluruh data atau membersihkan data. 
    Berikut ini adalah contoh Program Stack dalam Pemrograman Java : 
    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());
      }
    }

    Untuk contoh hasil Output dari kode di atas sebagai berikut dibawah ini : 

  2. QUEUE/Antrian
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 :
  1. EnQueue untuk Memasukkan data kedalam Antrian
  2. DeQueue untuk Mengeluarkan data kedalam Antrian.
  3. IsFull untuk memeriksa apakah antrian Penuh
  4. IsEmpety untuk memeriksa apakah antrian Kosong
  5. Clear untuk Menghapus seluruh Antrian.
Dalam kehidupan sehari-hari, ada banyak sekali tentang Queue atau antrian. Contohnya adalah sebagai berikut :
  • 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 :
  1. Enqueue  : Seseorang membeli tiket melalui tempat pembayaran tiket yang disediakan.
  2. Dequeue  : Setelah membeli tiket, langsung menuju tempat tunggu Kereta Api, dengan sebelumnya petugas memeriksa cek tiket tersebut.
  3. Clear    : Pembeli tiket tersebut telah terhapus dari antrian karena sudah melewati pembayaran administrasi tersebut.
  4. IsEmpty  : Petugas tiket Kereta  Api melihat tidak ada lagi yang ingin membeli tiket kereta.
  5. 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);
    }
}

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

Contoh queue said…
makasih banget min
Unknown said…
Terima kasih yah ;)
Anonymous said…
thanks min :D

Popular posts from this blog

Permainan Logika tentang Algoritma

Cara Menyisipkan Tanggal (JCalender) di Java NetBeans dan di Simpan dalam Database