实现队列循环
开发工具与关键技术:MyEclipse 10/Java
作者:cxxone
撰写时间:2019年07月25日
/*
* 队列
* 队头删除,队尾插入
* (需要用到两个参数 删除参数 插入参数 )
* (循环队列)
*/
public class CopyOfDuilie {
public static void main(String[] args) {
Object[] objs=new Object[6];
String str="";
Queueimpl1 queueimpl=new Queueimpl1(objs, 0, 0);
for (int i = 0; i < 9; i++) {
queueimpl.append(i);
if(i<3){
str+=queueimpl.delete()+",";
}
}
System.out.println("出队元素:"+str);
String str1="";
for (int i = 0; i < objs.length; i++) {
str1+=objs[i]+",";
}
System.out.println("进队元素:"+str1);
}
}
interface Queue1{
public void append(Object obj);//插入
public Object delete();//删除
}
class Queueimpl1 implements Queue1{
Object[] objs;//队列
int front;//删除
int rear;//插入
public Queueimpl1(Object[] objs, int front, int rear) {
this.objs = objs;
this.front = front;
this.rear = rear;
}
//插入 123456 进队:0123 出队:
@Override
public void append(Object obj) {
//判断
if(front>0&&objs.length==rear){
rear=0;
}
if(objs.length>rear){
objs[rear]=obj;
rear++;
}else{
System.out.println("队列已满!!");
}
}
//删除
@Override
public Object delete() {
Object obj = null;
if(rear>0&&objs.length==front){
front=0;
}
if (objs.length>front) {
obj=objs[front];
objs[front]="";
front++;
}else{
System.out.println("队列为空");
}
return obj;
}}
效果图: