1. 程式人生 > >建立自己的迴圈Queue底層使用陣列java版

建立自己的迴圈Queue底層使用陣列java版

package queuecycle;
/*
 * yy
 * */
public class QNode {


private int[] data;
private int front;
private int rear;
public int[] getData() {
return data;
}
public void setData(int[] data) {
this.data = data;
}
public int getFront() {
return front;
}
public void setFront(int front) {
this.front = front;
}
public int getRear() {
return rear;
}
public void setRear(int rear) {
this.rear = rear;
}
public QNode(int[] data, int front, int rear) {
super();
this.data = data;
this.front = front;
this.rear = rear;
}
public QNode() {

}


public QNode(int n) {
        this.data=new int[n];
        this.front=0;
        this.rear=0;
}

}

package queuecycle;


public class CycleQueue {


/**
* @author by yy
* 迴圈連結串列可以重複的利用陣列的資源
*/

private QNode queue;
private int maxsize;


public CycleQueue(int n) {
this.queue=new QNode(n);
this.maxsize=n;
}




public CycleQueue(QNode queue) {
super();
this.queue = queue;
}



public int getMaxsize() {
return maxsize;
}




public void setMaxsize(int maxsize) {
this.maxsize = maxsize;
}




public QNode getQueue() {
return queue;
}




public void setQueue(QNode queue) {
this.queue = queue;
}

//判斷當前的佇列是否為空
public boolean isEmpty(){
return queue.getFront()==queue.getRear();
}
//判斷佇列是否已經滿了
public boolean isFull(){
return queue.getFront()==(queue.getRear()+1)%(maxsize);
}
//新增元素
public void queue_enter(int data){
if(!isFull()){
queue.getData()[queue.getRear()]=data;
queue.setRear((queue.getRear()+1)%(maxsize));
}else{
System.out.println("佇列已經滿了");
}
}

//刪除佇列中的元素
public int queue_delete(){
if(isEmpty())return -1;
int data=queue.getData()[queue.getFront()];
queue.setFront((queue.getFront()+1)%(maxsize));
return data;
}
//迴圈佇列中元素的個數
public int getSize(){
System.out.println(queue.getRear()+"  "+queue.getFront());
return (queue.getRear()-queue.getFront())%(maxsize);
}

//迴圈佇列元素清空
public void clear(){
queue.setRear(0);
queue.setFront(0);
}

public static void main(String[] args) {
CycleQueue queue=new CycleQueue(5);
queue.queue_enter(1);
queue.queue_enter(2);
queue.queue_enter(3);
queue.queue_enter(4);
queue.queue_enter(5);
System.out.print(queue.getSize());
System.out.println();
while(!queue.isEmpty()){
int v=queue.queue_delete();
System.out.print(v+" ");
}
System.out.println();
System.out.print(queue.getSize());
queue.clear();
queue.queue_enter(6);
queue.queue_enter(7);
queue.queue_enter(8);
queue.queue_enter(9);
System.out.println();
System.out.print(queue.getSize());
}
}