栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/718788.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号