LeedCode刷题笔记-从头到尾打印链表
题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
解题代码
int* reversePrint(struct ListNode* head, int* returnSize)
{
*returnSize = 0;
if(head == NULL)
{
return NULL;
}
int stack[10001] = {0};
int num_count = 0;
while(head != NULL)
{
stack[num_count++] = head->val;
head = head->next;
}
int * ret = (int *)malloc(sizeof(int) * (num_count + 1));
while(num_count > 0)
{
ret[(*returnSize)++] = stack[(--num_count)];
}
return ret;
}
思路总结
- 这里使用的是栈存储,需要开辟多余的内存,也是可以使用递归的方法
- 需要注意的是,数组里的下标取值问题,是否是正确的,还有是否越界