题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
-
示例 1:
输入:head = [1,3,2]
输出:[2,3,1] -
限制:
0 <= 链表长度 <= 10000
思路一:栈
栈的特点是后进先出,即最后压入栈的元素最先弹出。考虑到栈的这一特点,使用栈将链表元素顺序倒置。从链表的头节点开始,依次将每个节点压入栈内,然后依次弹出栈内的元素并存储到数组中。
栈实现
class Solution {
public int[] reversePrint(ListNode head) {
Stack<ListNode>stack=new Stack<ListNode>();
ListNode temp=head;
while(temp!=null){
stack.push(temp);
temp=temp.next;
}
int length=stack.size();
int [] res=new int[length];
for(int i=0;i<length;i++){
res[i]=stack.pop().val;
}
return res;
}
}