使用链表的Java队列

时间:2015-02-22 23:10:29

标签: java spring linked-list queue

我正在努力完成作业。目标是使用链表填写队列实现中的空白并写入输出。所有带星号的代码(****代码****)都是我填写的空白,其中一些很可能被错误地填充了 - 我不完全理解为什么。

如果有人可以指出我正确的方向,修复代码或解释我填错了什么以及为什么,我将不胜感激。

谢谢你, 提米

修改:请在链接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 个答案:

答案 0 :(得分:1)

我可以指出的错误很少:

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

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

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

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

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

由于返回类型为double,您需要返回对象内的数字。

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

同样,你必须返回在队列中推送的第一个元素。

以下代码的输出为:

17 23 15