从尾到头打印链表(*)
输入一个链表,从尾到头打印它
思路:用两种方法第一种是用堆栈的思想,将链表遍历压入栈中然后再一个个弹出来
第二种使用递归的思想,因为递归是从内到外,先遍历每个节点,然后再回去打印输出
public static class Node{
int val;
Node next;
}
public static void print1(Node root){
if(root!=null){
print1(root.next);
System.out.println(root.val);
}
}
public static void print2(Node root){
Stack<Node> stack = new Stack<>();
while(root!=null){
stack.push(root);
root=root.next;
}
while(!stack.isEmpty()){
Node data=stack.pop();
System.out.println(data.val);
}
}
样例:
public static void main(String[] args) {
Node root = new Node();
root.val = 1;
root.next = new Node();
root.next.val = 2;
root.next.next = new Node();
root.next.next.val = 3;
root.next.next.next = new Node();
root.next.next.next.val = 4;
root.next.next.next.next = new Node();
root.next.next.next.next.val = 5;
print2(root);
}
5
4
3
2
1
Process finished with exit code 0