问题:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)
代码
int* reversePrint(struct ListNode* head, int* returnSize){
struct ListNode*p=head;
int cnt=0;
while(p){ //遍历链表得到链表结点数量
num++;
p=p->next;
}
*returnSize=num;---------------------------------------------------------------------------------------1
int* ans=(int*)malloc(num*sizeof(int));
int i=num-1;-------------------------------------------------------------------------------------------------2
p=head;
while(p){
ans[i--]=p->val; //倒序将链表元素放入数组
p=p->next;
}
return ans;
}
问题1:1处若提前转换为序数减1,则引发越界,原因是malloc开辟的空间不足导致后续数组填入时没有空间
问题2;2处若没有减1,引发的越界为ans[0]=p->val;而此时p=null