第一想到的不就是把链表的值一个一个放到数组里去,然后再把数组的值反转,最后打印就好了嘛。
可是逆置也很麻烦啊,然后看到别人的写法,先遍历一遍把结点个数num计算出来,然后指针再回到链头,
接着把元素一个一个倒着放进数组不就可以了吗,从arr[num-1] 一直到arr[0]; 果然 快很多
int* printListFromTailToHead(struct ListNode* listNode, int* returnSize ) {
int cnt = 0;
int *arr = NULL;
struct ListNode* p = listNode;
while(p != NULL){
p = p->next;
cnt++;
}
arr = (int*)malloc(sizeof(int) * cnt);
*returnSize = cnt;
p = listNode;
while(p != NULL){
arr[--cnt] = p->val;
p = p->next;
}
return arr;
}

京公网安备 11010502036488号