首先定义一个队列的类
class queuelink{
int []elem;
int front;//队头
int rear;//队尾
int usesize=0;//当前循环队列的有效数据个数
int allsize=10;//
public queuelink(){
this(10);
}
public queuelink(int size) {
this.elem=new int[size];
this.front=0;
this.rear=0;
}
//判断是否为满
public boolean isfull(){
if((this.rear+1)%this.allsize==this.front){
return true;
}
return false;
}
//入队
public void push(int val){
if(isfull()){//如果数组为满的,直接跳出
return;
}
this.elem[this.rear]=val;
this.rear=(this.rear+1)%this.allsize;
this.usesize++;
}
//判断是否为空
public boolean isempty(){
return this.front==this.rear;
}
//出队
public int pop(){
if(isempty()){
return -1;
}
int num=this.elem[this.front];
this.elem[this.front]=-1;//把原来第一号元素给覆盖掉
this.front=(this.front+1)%this.allsize;//让数组下标像后面移动
this.usesize--;
return num;
}
//得到第一个元素
public int getfront(){
if(isempty()){//如果数组为空,返回-1
return -1;
}
return this.elem[this.front];}//如果不为空直接返回elem[this.front]
//打印队列
public void show(){
for(int i=this.front;i<rear;i=(i+1)%this.allsize){//此处不能使用i++,因为最后一个元素的下一个元素的下标为0
System.out.println(this.elem[i]);
}
}
public int get(){
return this.usesize;
}
}
入栈方法:
public static void enter(queuelink q1,queuelink q2,int val){
queuelink p=null;//先定义一个空队列
if(!q1.isempty()){//让p指向有数据的队列
p=q1;
}else{
p=q2;
}
p.push(val);//进行入栈
}
出栈方法:
原理
public static int pop(queuelink q1,queuelink q2){
queuelink p1=null;//指向出队的队列
queuelink p2=null;//出对后元素需要放置的地方
if(!q1.isempty()){
p1=q1;
p2=q2;
}else{
p1=q2;
p2=q1;
}//确认好出队的队列,以及将来要把出对后的队列放在什么地方
//出队
if(p1.isempty()){//如果p1是空的,说明俩个队列都是空的
}else{
while(p1.usesize>1){//出元素:让p1出到只剩下一个
p2.push(p1.pop());//p2把p1出队的元素进行入队
}
return p1.pop();//当p1只剩下一个元素的时候,返回这个值
}
return -1;
}
调试代码
public static void main(String[] args) {
queuelink q1=new queuelink ();
queuelink q2=new queuelink ();
q1.push(6);
q1.push(4);
q1.push(3);
enter(q1,q2,5);
q1.show();
System.out.println("==第一次出栈==");
System.out.println(pop(q1,q2));
System.out.println("==第二次出栈==");
System.out.println(pop(q1,q2));
System.out.println("==第三次出栈==");
System.out.println(pop(q1,q2));
}
运行结果
6
4
3
5
==第一次出栈==
5
==第二次出栈==
3
==第三次出栈==
4