题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例
题解
创建一个与链表等大小的int数组。倒序将数字写入。
要知道链表的长度,必须先暂存链表头节点,再进行计算,否则链表遍历一次之后,将丢失头节点。
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
int totalNum = 0;
//暂存头节点
ListNode oriHead = head;
//遍历链表,获取链表长度
while(oriHead != null) {
totalNum ++;
oriHead = oriHead.next;
}
int[] res = new int[totalNum];
if (totalNum <= 0) {
return res;
}
//数组倒序赋值
for (int i = totalNum - 1; i >= 0; i--) {
res[i] = head.val;
head = head.next;
}
return res;
}
}