创建自己的循环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());
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值