输入一个链表,从尾到头打印链表每个节点的值。
输入描述:
输入为链表的表头
输出描述:
输出为需要打印的“新链表”的表头
分析:
共有两种方法:
-
使用堆栈将链表中的数值进行存储,出栈时逆置
-
使用递归思想实现。
方法一·`package com.helan.a;
import java.util.Stack;
public class PrintListReverse {
public static class ListNode{
int val;
ListNode next;
}
public static void printListInverseIteration(ListNode root){
Stack stack=new Stack();
while (root!=null){
stack.push(root);
root=root.next;
}
while(!stack.isEmpty()){
System.out.println(stack.pop().val+" ");
}
}
public static void main(String[] args) {
ListNode root = new ListNode();
root.val = 1;
root.next = new ListNode();
root.next.val = 2;
root.next.next = new ListNode();
root.next.next.val = 3;
root.next.next.next = new ListNode();
root.next.next.next.val = 4;
root.next.next.next.next = new ListNode();
root.next.next.next.next.val = 5;
printListInverseIteration(root);
}
方法二·
package com.helan.a;
public class PrintListReverse {
public static class ListNode{
int val;
ListNode next;
}
public static void printListInverseRecursion(ListNode root){
if(root!=null){
printListInverseRecursion(root.next);
System.out.println(root.val);
}
}
public static void main(String[] args) {
ListNode root = new ListNode();
root.val = 1;
root.next = new ListNode();
root.next.val = 2;
root.next.next = new ListNode();
root.next.next.val = 3;
root.next.next.next = new ListNode();
root.next.next.next.val = 4;
root.next.next.next.next = new ListNode();
root.next.next.next.next.val = 5;
printListInverseRecursion(root);
}
}