【题目】:
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
【示例】:
输入链表
123456
倒序输出结果:
654321
【关键点】: 利用栈(先进后出)原理
【Java】:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
import java.util.Stack;//引入栈
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<Integer>();//定义一个新的集合list存放倒序链表
Stack<Integer> s = new Stack<Integer>();//定义一个栈s用于缓存队列
//先进
while(listNode!=null) {//正向遍历listNode链表,全部存入栈中
s.push(listNode.val);//第一个节点存入栈中
listNode = listNode.next;//指向下一个节点
}
//后出
while(!s.isEmpty()) {//栈不为空,取出节点存入list
list.add(s.pop());//从最上层依次取出
}
return list;
}
}