我正在努力完成作业。目标是使用链表填写队列实现中的空白并写入输出。所有带星号的代码(****代码****)都是我填写的空白,其中一些很可能被错误地填充了 - 我不完全理解为什么。
如果有人可以指出我正确的方向,修复代码或解释我填错了什么以及为什么,我将不胜感激。
谢谢你, 提米
修改:请在链接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. _____
答案 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