题目
输入一个链表,从尾到头打印链表每个节点的值
分析
最容易想到的就是进行链表的翻转,但是这样会改变原始的输入,可能不满足要求。
链表从后先输出,就是先进后出的思想,那么读取一个入栈一个,最后依次弹出,就可以满足要求。
代码
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
// 存储结果的链表
ArrayList<Integer> resultList = new ArrayList<>();
// 创建一个栈
Stack<Integer> stack = new Stack<>();
// 从头开始遍历链表
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
// 出栈
while(!stack.isEmpty()){
resultList.add(stack.pop());
}
return resultList;
}
}