一名代码小白,随便写写,记录一下自己编码过程所得
首先创立一个l3用于记录新的递增序列,curr用于标记当前的位置,我没有学过别的语言,只会c语言,在c中一定要malloc分配内存,而且切记:初始化!!不要存在野指针,否则会出现第一次测试通过,之后样例全失败的情况,报错:Line 70: Char 15: runtime error: member access within misaligned address 0xbebebebebebebebe for type 'struct ListNode', which requires 8 byte alignment [ListNode.c]0xbebebebebebebebe: note: pointer points here
通常做法是. struct ListNode* curr;
curr = (struct ListNode *)malloc(sizeof(struct ListNode));
curr->next=NULL;
这道题思路很简单就不多说,还有一个需要注意的地方,我是让l3的next指针指向curr,因此在返回答案时,正确的做法是 return l3->next->next,否则答案会多一个数字,要把头指针越过。
以下是函数代码:
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
struct ListNode* l3;
struct ListNode* curr;
curr = (struct ListNode *)malloc(sizeof(struct ListNode));
l3 = (struct ListNode *)malloc(sizeof(struct ListNode));
l3->next=NULL;
curr->next=NULL;
l3->next=curr;
while(l1!=NULL&&l2!=NULL){
if(l1->val<=l2->val){
curr->next=l1;
l1=l1->next;}
else { curr->next=l2;l2=l2->next;}
curr=curr->next;
}
if(l1!=NULL) curr->next=l1;
if(l2!=NULL) curr->next=l2;
return l3->next->next;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)