import java.util.ArrayList;
import java.util.Iterator;
import java.util.Stack;
/**
* 题目:
* 输入一个链表,从尾到头打印链表每个节点的值
* */
/**
* 理解题意:
* 输入:链表
* 输出:链表的值(从尾到头顺序输出)
* */
/**
* 解题思路:
* 从尾到头输出,也就是后进先出,联想到用栈来实现;
* 将链表的值从头到尾的入栈,然后出栈放到list中去,逐个打印出来即可
* */
class ListNode{
int val;
ListNode next = null;
ListNode(int val){
this.val = val;
}
}
public class PrintListNode {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
Stack<Integer> stack = new Stack<>();
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> list = new ArrayList<>();
while (!stack.isEmpty()) {
list.add(stack.pop());
}
return list;
}
public static void main(String[] args) {
PrintListNode pln = new PrintListNode();
ListNode listNode = new ListNode(10);
ArrayList<Integer> list = pln.printListFromTailToHead(listNode);
Iterator<Integer> it = list.iterator();
while(list.iterator().hasNext()){
System.out.println(it.next());
}
}
}
测试用例可以自己写