描述
从尾到头反过来打印出每个结点的值。
例子
Input:
1 -> 2 -> 3
Output:
3 2 1
思路
方法一:递归调用
方法二:使用栈
代码
class Node {
private Node next;
private int val;
public Node(Node next, int val) {
this.next = next;
this.val = val;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
}
public class Question004 {
public static void main(String[] args) {
Node node3 = new Node(null, 3);
Node node2 = new Node(node3, 2);
Node node1 = new Node(node2, 1);
Node node = node1;
//使用栈
Stack<Integer> stack = new Stack<>();
while (node != null) {
stack.push(node.getVal());
node = node.getNext();
}
while (!stack.empty()) {
System.out.println(stack.pop());
}
//递归调用
// printListFromTailToHead(node1);
}
public static void printListFromTailToHead(Node list) {
if (list.getNext() != null) {
printListFromTailToHead(list.getNext());
}
System.out.println(list.getVal());
}
}