interface queueinterface{
public boolean isempty();
public boolean isfull();
public boolean enqueue(Object k);
public Object dequeue();
}
class queue1 implements queueinterface{
private Object table[];
private int front,rear;
public queue1(int n) {
table=new Object[n];
front=rear=0;
}
public boolean isempty() {
return front==rear;
}
public boolean isfull() {
return front==(rear+1)%table.length;
}
public boolean enqueue(Object k) {
if(!isfull()) {
table[rear]=k;
rear=(rear+1)%table.length;
return true;
}else {
System.out.println("队列已满,无法加入");
return false;
}
}
public Object dequeue() {
Object k=null;
if(!isempty()) {
k=table[front];
table[front]=null;
front=(front+1)%table.length;
}
return k;
}
}
class queue2 extends onelink1{
private onelinknode front,rear;
public queue2() {
front=rear=null;
}
public boolean isempty() {
return (front==null)&&(rear==null);
}
public boolean enqueue(int k) {
onelinknode q=new onelinknode(k);
if(!isempty())
rear.next=q;
else
front=q;
rear=q;
return true;
}
public int dequeue() {
int k=-1;
if(!isempty()) {
k=front.data;
front=front.next;
if(front==null)
rear=null;
}
return k;
}
}
数据结构之队列
最新推荐文章于 2023-01-11 11:36:31 发布
该博客介绍了两种队列的实现方式:一种基于数组的循环队列`queue1`,另一种基于链表的队列`queue2`。`queue1`使用了固定大小的数组,通过`front`和`rear`指针管理元素;`queue2`使用单链表结构,通过`front`和`rear`节点进行操作。博客详细展示了它们的`enqueue`和`dequeue`方法,以及判断队列是否为空或已满的方法。
摘要由CSDN通过智能技术生成