牛客网练习题:真题链接
解题思路:
首先,用一个指针p代替头结点,然后遍历一遍链表,得到最后的链表大小,得到链表大小之后,再用--num来填充数组。注意:给出的是一个头结点。注释掉 第二个 p=listNode;则失败。这里说明这个头结点非常重要。
int* printListFromTailToHead(struct ListNode* listNode, int* returnSize ) {
// write code here
//********************************************一个头结点是多么重要~!~!~!~!~
if(listNode == NULL)
return -1;
struct ListNode *p = listNode;
int num = 0;
int *res = NULL;
while(p){
p = p->next;
num++;
}
res = (int *)malloc(num*sizeof(int));
p = listNode;
*returnSize = num;
while(p){
res[--num] = p->val;
p = p->next;
}
return res;
}



