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
我正在为一项作业而苦恼。目标是使用 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