Contoh Program Stack dan Queue pada Java (Intellij)

Stack dan Queue adalah fungsi yang sering diimplementasikan pada program, tidak terkecuali pada program Java. Sebelum membahas mengenai code dari porgram stack dan queue mari kita bahas terlebih dahulu definisi dan penjelasan dari kedua fungsi tersebut.

1. Stack
Stack atau tumpukan adalah struktur data yang menyusun data seperti tumpukan dan bersifat last in first out/LIFO. Maksudnya adalah data yang pertama kali masuk merupakan data yang nantinya akan keluar paling akhir. Pada stack terdapat lagi 5 fungsi yaitu push(memasukkan data), pop(mengeluarkan data), isfull(mengetahui tumpukan sudah penuh), isempty(mengetahui tumpukan kosong), dan clear(menghapus seluruh data.

Program:

import java.lang.reflect.Array;

public class Stack <T> {
  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<Integer> a = new Stack<Integer>(Integer.class);
  a.push(5);
  a.push(6);
  a.push(7);

  System.out.println(a.pop());
  System.out.println(a.pop());
  }
}


2. Queue
Queue atau antrian adalah struktur data yang menyusun data seperti tumpukan dan bersifat first in first out/FIFO. Maksudnya adalah data yang pertama kali masuk merupakan data yang nantinya akan keluar paling awal. Pada queue terdapat lagi 5 fungsi yaitu enqueue(memasukkan data), dequeue(mengeluarkan data), isfull(mengetahui tumpukan sudah penuh), isempty(mengetahui tumpukan kosong), dan clear(menghapus seluruh data.

Program:


import java.lang.reflect.Array; import java.util.Scanner;
public class Queue<T> {
public Integer pointer;
private Integer sizeArray;
private 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 <String> 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)
{
if (pil == 1)
{
String data;
System.out.print("Masukkan Data: ");
data = scanner.next();
queue.enqueue(data);
} else if (pil == 2)
queue.dequeue();
else if (pil == 3)
queue.clearQueue();
}
else
break;
}while(true);
}
}

Komentar

Postingan Populer