Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复队列实现?(爪哇)_Java_Data Structures_Queue_Implementation_Doubly Linked List - Fatal编程技术网

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

我的Java队列实现不起作用,我不知道为什么。我认为这是
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());

    }

}