描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
如输入{1,2,3}的链表如下图:
返回一个数组为[3,2,1]
0 <= 链表长度 <= 10000
示例1
输入:
{1,2,3}
复制返回值:
[3,2,1]
复制
示例2
输入:
{67,0,24,58}
复制返回值:
[58,24,0,67]
代码:
int* printListFromTailToHead(struct ListNode* listNode, int* returnSize ) {
static int sum = 0,i=0;
struct ListNode* temp = listNode;
while (temp != NULL){
sum++;
temp = temp->next;
}
*returnSize = sum;
int *num = (int*) malloc(sizeof(int) * sum);
// int num[3] = {0};
temp = listNode;
for(i=sum-1; i >=0;i--){
num[i] = temp->val;
temp = temp->next;
}
return num;
}
用递归写,容易栈溢出,c没有封装的栈数据结构,用栈是最好的选择。这种写法的时间复杂度相当于o(2n)。