Java队列使用链表

Java queue using linkedlist

我正在为一项作业而苦恼。目标是使用 linked 列表填充队列实现中的空白并写入输出。所有带星号的代码 (****code****) 都是我填的那些空白,其中一些很可能填错了 - 我不完全明白为什么。

如果有人能指出我正确的方向,修复代码或解释我填写错误的地方和原因,我将不胜感激。

谢谢, 蒂米

编辑:请在 link link

中找到随附的作业
public class DoubleQueue {
public class QueueEmptyException extends RuntimeException{};

private **class** Node{
    double num;
    Node next = null;
    Node (**double** num) {**this**.num = **num**;}
}

private Node head = null;

public void push(double num){
    Node tmp = **new** Node(**num**);
    tmp.**next** = head;
    head = **num**;     
}

public double pop() throws QueueEmptyException {
    if (**num** == null) throw new **QueueEmptyException**(){
    Node node = head;
    if(node.next == null){
        head = null;
        return node.**next**;
    }
    while (node.next.**next** != null)
        **node** = **node**.next;
    }
    double ret = aux.next.**next**;
    aux.next=null;
    return ret;
    }
}


DoubleQueue queue = new DoubleQueue();
queue.push(17);
queue.push(23);
queue.push(15);
System.out.println(queue.pop());
System.out.println(queue.pop());
System.out.println(queue.pop());

控制台输出是什么? 1. _____ 2. _____ 3._____

我可以指出的几个错误是:

1) head = **num**; -> head = **temp**;

因为您将头部指向插入的最新值。

2) if (**num** == null) -> if (**head** == null)

您必须检查节点对象是否为空。

3) return node.**next** -> return node.**num**

由于 return 类型是 double 您需要 return 对象内的数字。

4) double ret = aux.next.**num**; -> double ret = node.next.**num**;

同样,您必须return第一个被推入队列的元素。

以下代码的输出为:

17 23 15