题目描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
如输入{1,2,3},返回一个数组为[3,2,1]
0 <= 链表长度 <= 10000
题解一
解题思路:利用栈先进后出的特性,遍历链表,push进栈,再定义一个数组,pop出栈。
/**
* 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) {
//定义栈
Stack<Integer> stack = new Stack<Integer>();
ListNode p = listNode; //p是遍历指针
while(p != null){
stack.push(p.val);
p = p.next;
}
ArrayList<Integer> list= new ArrayList<Integer>();
while(!stack.isEmpty()){
list.add(stack.pop());
}
return list;
}
}
该博客介绍了一种利用栈的特性解决从尾到头打印链表问题的方法。通过遍历链表并将节点值压入栈中,然后依次弹出栈内元素,可以实现链表的逆序输出。提供的代码示例展示了如何在Java中实现这一解决方案。
790

被折叠的 条评论
为什么被折叠?



