第一想到的不就是把链表的值一个一个放到数组里去,然后再把数组的值反转,最后打印就好了嘛。
可是逆置也很麻烦啊,然后看到别人的写法,先遍历一遍把结点个数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; }