输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
遇到这种逆序返回的值 我们 首先可以想到使用栈来完成
要了解 栈的特性 先入后出 相当于一个弹夹 最先放进来的被压到了最后
那么我们就很好实现这道题了
代码语言:javascript复制class Solution {
public int[] reversePrint(ListNode head) {
//这种倒序输出的题 我们可以用栈的特性 栈是先入后出
Stack<Integer> stack = new Stack<Integer>();
//循环 当传入的 链表 不为null的时候我们把每个元素入栈
while(head!=null){
stack.push(head.val);
//指针 后移一位相当于元素往后挪动一个
head=head.next;
}
//得到栈的大小 因为如果在 for循环中使用size获取 会导致每一轮的size都会变化都是数据
int size=stack.size();
//创建一个 跟栈大小相同的数组 存放返回的数据
int[] temp=new int[size];
for(int i=0;i<size;i ){
//从栈中取出元素 放进数组中 因为栈是先进后出 所以天然形成了倒序
temp[i]=stack.pop();
}
//返回存放倒序元素的数组
return temp;
}
}