前言:内容包括:题目,代码实现,大致思路
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
int* reversePrint(struct ListNode* head, int* returnSize)
{
struct ListNode*p = head;
int count = 0;
while(p)
{
count++;
p=p->next;
}
*returnSize = count;
int*arr=(int*)malloc(sizeof(int)*count);
count--;
p=head;
while(p)
{
arr[count--]=p->val;
p=p->next;
}
return arr;
}
1 统计节点的个数
2 malloc动态开辟一块大小和原链表节点数一样的空间,用于倒着存放每个节点中的值
3 count--,让此时的count作为最后一个元素的下标
p=head,使得指针p重新指向第一个节点