描述
输入一个链表,从尾到头打印链表每个节点的值。
思路分析
- 栈:从前向后遍历链表,把每个节点的值入栈,结束遍历后再全部弹出打印。
- 递归。
注意
- 内部类的实例化
Out.in xxx = new Out().new in(); - ArrayList的打印
ArrayList arr; //动态数组,
System.out.println(arr.toString()); //打印
栈
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Stack;
public class PrintList {
public class ListNode
{
private int value;
private ListNode next = null;
public ListNode(int value)
{
this.value = value;
}
}
public static ArrayList<Integer> PrintList(ListNode listNode)
{
Stack<Integer> res = new Stack<>();
while(listNode != null)
{
res.push(listNode.value);
listNode=listNode.next;
}
ArrayList<Integer> list = new ArrayList<>();
while(res.isEmpty() == false)
list.add(res.pop());
return list;
}
public static void main(String[] args)
{
PrintList.ListNode listNode0 = new PrintList().new ListNode(3);
PrintList.ListNode listNode1= new PrintList().new ListNode(4);
PrintList.ListNode listNode2= new PrintList().new ListNode(5);
PrintList.ListNode listNode3= new PrintList().new ListNode(6);
PrintList.ListNode listNode4= new PrintList().new ListNode(7);
listNode0.next = listNode1;
listNode1.next = listNode2;
listNode2.next = listNode3;
listNode3.next = listNode4;
System.out.println(PrintList(listNode0).toString());
}
}
递归
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Stack;
public class PrintList {
public class ListNode
{
private int value;
private ListNode next = null;
public ListNode(int value)
{
this.value = value;
}
}
public static ArrayList<Integer> res = new ArrayList<>();
public static ArrayList<Integer> PrintList(ListNode listNode)
{
if(listNode != null)
{
PrintList(listNode.next);
res.add(listNode.value);
}
return res;
}
public static void main(String[] args)
{
PrintList.ListNode listNode0 = new PrintList().new ListNode(3);
PrintList.ListNode listNode1= new PrintList().new ListNode(4);
PrintList.ListNode listNode2= new PrintList().new ListNode(5);
PrintList.ListNode listNode3= new PrintList().new ListNode(6);
PrintList.ListNode listNode4= new PrintList().new ListNode(7);
listNode0.next = listNode1;
listNode1.next = listNode2;
listNode2.next = listNode3;
listNode3.next = listNode4;
System.out.println(PrintList(listNode0).toString());
}
}