力扣【合并两个递增有序链表】(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
<memory cannot be printed>

通常做法是. 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;

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值