You are on page 1of 3

import java.util.

*; //author Aldo Kelvianto Wachyudi //5211100092 public class CircularQueue { private Node daftar[]; private int head,tail; private int maxdata; private int rnode; public CircularQueue() { daftar=new Node[100]; head=-1; tail=-1; maxdata=100; rnode=0; for(int i=0;i<100;i++) daftar[i]=new Node(); } public CircularQueue(int n) { daftar=new Node[n]; head=-1; tail=-1; maxdata=n; rnode=0; for(int i=0;i<n;i++) daftar[i]=new Node(); } public public public public int int int int gethead() { return(head); } getTail() { return(tail); } getrnode() { return(rnode); } getMaxData() { return(maxdata); }

public void insert(Object n) { int t=findEmpty(); if(t>-1) daftar[t].setData(n); else { remove(); insert(n); return; } if(tail>-1) { daftar[tail].setNext(t); daftar[t].setPrev(tail); } else head=t; tail=t; rnode++; if(rnode==maxdata) System.out.println("Circular Queue penuh"); } private int findEmpty() { for(int i=0;i<maxdata;i++) { if(daftar[i].getNext()==-1 && daftar[i].getPrev()==-1 && i!=head && i!=tail) { return(i); } } return(-1); } public Object getData(int n) { int alpro;

if(n<=Math.floor(rnode/2)) { alpro=head; for(int i=0;i<n-1;i++) alpro=daftar[alpro].getNext(); return(daftar[alpro].getData()); } else { alpro=tail; for(int i=0;i<rnode-n;i++) alpro=daftar[alpro].getPrev() ; return(daftar[alpro].getData()); } } public void setData(int n, int m) { int alpro; if(n<=Math.floor(rnode/2)) { alpro=head; for(int i=0;i<n-1;i++) alpro=daftar[alpro].getNext(); daftar[alpro].setData(m); } else { alpro=tail; for(int i=0;i<rnode-n;i++) alpro=daftar[alpro].getPrev() ; daftar[alpro].setData(m); } } public void display() { int i; for(i=0;i<getrnode()-1;i++) { System.out.print(getData(i+1)+", ") ; } System.out.print(getData(i+1)); } public void remove() { if (rnode==0) { System.out.println("Circular queue sudah kosong"); return; } int x=daftar[head].getNext(); daftar[head].setNext(-1); daftar[head].setPrev(-1); head=x; rnode--; if (rnode==0) System.out.println("Circular Queue kosong"); } } class Node { private int prev, next; private Object data; public Node() { prev=-1; next=-1; data=0; } public Node(Object n) { prev=-1; next=1; data=n; }

public void setNext(int n) { next=n; } public int getNext() { return(next); } public void setPrev(int n) { prev=n; } public int getPrev() { return(prev); } public void setData(Object n) { data=n; } public Object getData() { return(data); } }

You might also like