【发布时间】:2015-09-29 03:09:49
【问题描述】:
我有两个难以理解的练习题。对于#1,答案是列表是反向打印的,有人可以向我解释一下吗?还有#7,为什么列表一旦到达空值就会开始倒退?如果有人能提供一些快速的解释,将不胜感激,谢谢!
1) 如果我们用头节点调用给定的链表,下面的函数会做什么?
void method1(Node<T> node) {
if(node == null)
return;
method1(node.getNext());
System.out.println(node.getData().toString());
}
一个。打印链表的节点。
b.以相反的顺序打印链表的节点。
c。打印链表的备用节点。
d。以相反的顺序打印备用节点。
回答
b.以相反的顺序打印链表的节点。
7) 如果我们用链表 1 → 2 → 3 → 4 → 5 → 6 的头节点调用它,这个方法会打印什么?
void method1(Node<Integer> node) {
if (node == null)
return;
System.out.printf(“%d ”, node.getData());
if (node.getNext() != null)
method1(node.getNext().getNext());
System.out.printf(“%d ”, node.getData());
}
一个。 1 6 2 5 3 4
b. 1 3 5 6 4 2
c。 1 3 5 1 3 5
d。 1 3 5 5 3 1
回答
c。 1 3 5 5 3 1
【问题讨论】:
-
理解此类问题的最佳方法是编写代码并使用调试器逐步执行。第一个问题是递归的,
System.out.println(...)在方法返回之前被调用。试着想想程序对于给定的输入列表将采取的步骤顺序。
标签: java linked-list nodes