Antrian (Queue)

mengantri adalah hal yang sangat membosankan, apalagi antriannya panjang ūüėÄ , pada kali ini kita akan belajar tentang struktur data antrian atau biasa disebut dengan queue. layakanya seperti antrian di dunia nyata seperti antrian mengisi bensin di pom bensin, yang awal akan dilayani terlebih dahulu dan selesainya pun duluan begitu juga dengan konsep struktur data antrian (Queue) dengan konsep Fifo bukan merek HP ya‚Ķ.:D

Fifo (First In First Out), data yang awal duluan ngantri maka data tersebut juga yang akan dieksekusi lebih dahulu… adapun  Operasi/Fungsi pada Queue sebagai berikut:

  • IsEmpty (): fungsi ini digunakan untuk mengecek¬†apakah Antrian masih kosong atau sudah terisi oleh data, nilai true artinya antrian masih kosong
  • IsFull: Untuk mengecek apakah¬†data antrian sudah terisi penuh atau belum,nilai true artinya antrian sudah penuh
  • Enqueue (data): Untuk melakukan penambahan¬†elemen ke dalam Antrian, penambahan elemen selalu ditambahkan¬†pada posisi tail yang terakhir
  • Dequeue(): Digunakan untuk menghapus elemen pada posisi depan (Head)¬†pada antrian

adapun codenya sebagai berikut:

/*
 * 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 antrian;

/**
 *
 * @author Riki Afriansyah
 */
public class Antrian {

    /**
     * @param args the command line arguments
     */
    
  int data[];
    int tail = -1;
    int head = 0;

    public Antrian(int size) {
        data = new int[size];
    }

    public boolean isEmpty(){
        if(tail==-1){
            return true;
        }else{
            return false;
        }
    }

    public boolean isFull(){
        if(tail==data.length-1){
            return true;
        }else{
            return false;
        }
    }

    public void Enqueue(int datainput){
        if(isEmpty()){
            tail = head;
            data[tail] = datainput;
        }else if(!isFull()){
            tail++;
            data[tail] = datainput;
        }else if(isFull()){
            System.out.println("antrian full euy, saabar ya");
        }
    }

    public int Dequeue(){
        int temp = data[head];
        for(int i=head;i<=tail-1;i++){
            data[i] = data[i+1];
        }
        tail--;
        return temp;
    }
    
    public void tampilkan(){
        if(!isEmpty()){
            int index = head;
            while(index <= tail){
                System.out.print("|"+data[index]+"| ");
                index++;
            }
            System.out.println();
        }else{
            System.out.println("antrian kosong broo , ayoo kemari..");
        }
    }


    public static void main(String[] args){
     Antrian queue = new Antrian(3);
        queue.Enqueue(11);
        queue.Enqueue(21);
        queue.Enqueue(22);
        queue.tampilkan();
        queue.Dequeue();
        queue.Enqueue(32);
        queue.tampilkan();
        queue.Dequeue();
        queue.tampilkan();
        queue.Dequeue();
        queue.tampilkan();
        queue.Dequeue();
        queue.tampilkan();
      
    }
}