力扣【合并两个递增有序链表】(c语言)

力扣【合并两个递增有序链表】(c语言),第1张

力扣【合并两个递增有序链表】(c语言

一名代码小白,随便写写,记录一下自己编码过程所得

首先创立一个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;

}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5715107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存