Java 如何修复队列实现?(爪哇)
我的Java队列实现不起作用,我不知道为什么。我认为这是Java 如何修复队列实现?(爪哇),java,data-structures,queue,implementation,doubly-linked-list,Java,Data Structures,Queue,Implementation,Doubly Linked List,我的Java队列实现不起作用,我不知道为什么。我认为这是MyQueue类中的dequeue()方法。如何修复此问题以使队列正常工作?我已经包括了我的MyQueue类以及我用来构建队列的MyDoublyLinkedList类和MyDoubleNode类 以下是队列的实现: public class MyQueue<AnyType> implements Queue<AnyType> { MyDoublyLinkedList queuey = new KWLab03
MyQueue
类中的dequeue()
方法。如何修复此问题以使队列正常工作?我已经包括了我的MyQueue
类以及我用来构建队列的MyDoublyLinkedList
类和MyDoubleNode
类
以下是队列的实现:
public class MyQueue<AnyType> implements Queue<AnyType> {
MyDoublyLinkedList queuey = new KWLab03();
@Override
public boolean isEmpty() {
return queuey.isEmpty() ;
}
@Override
public void enqueue(AnyType x) {
queuey.insert(x); //inserts the data into the end of the queue
}
@Override
public AnyType dequeue() {
if(isEmpty())
{
System.out.println("Queue is empty.");
return null;
}
else
{
MyDoubleNode tmp = queuey.last;
MyDoubleNode cur = queuey.last.next;
queuey.last = cur;
return (AnyType) tmp.data;
}
}
@Override
public AnyType peek() {
return (AnyType) queuey.last.data;
}
}
下面是我的双链接列表节点类:
public class MyDoubleNode<AnyType> {
public AnyType data;
public MyDoubleNode<AnyType> next;
public MyDoubleNode<AnyType> prev;
}
任何帮助都将不胜感激。请同时添加测试代码。“不工作”。您看到的意外行为是什么?您似乎在列表末尾排队,然后从列表末尾退出。。这不是队列的先进先出行为。您应该在first.previous上插入,并删除last
public class MyDoubleNode<AnyType> {
public AnyType data;
public MyDoubleNode<AnyType> next;
public MyDoubleNode<AnyType> prev;
}
public class TestQueue {
public static void main(String[] args)
{
MyQueue queue1 = new MyQueue();
int a = 1, b = 2, c = 3;
queue1.enqueue(a); //enqueues a
System.out.println("The first item in the queue is " + queue1.peek());
queue1.enqueue(b); //enqueues b
System.out.println("The first item in the queue is " + queue1.peek());
queue1.enqueue(c); //enqueues c
System.out.println("The first item in the queue is " + queue1.peek());
System.out.println(queue1.dequeue());
System.out.println(queue1.dequeue());
System.out.println(queue1.dequeue());
}
}