有序单链表的合并
有序单链表的合并
将带表头的有序单链表La和Lb合并成Lc:
struct node *merge(struct node *La,struct node *Lb){
struct node *pa,*pb,*pc; //声明三个指针
pa=La->next; //pa指针指向La的首结点
pb=Lb->next; //pb指针指向Lb的首结点
pc=La; //使用表La的头结点,pc为尾指针
free(Lb); //释放表Lb的头结点(同理可以用Lb的头结点,释放La的头结点)
while(pa&&pb){ //表La和表Lb均有结点(两者同样长度的部分)
if(pa->data<=pb->data){ // 如果pa指向的数据域小于或等于pb指向的数据域
pc->next=pa; //(pa原来指向的结点)插在表Lc的尾结点之后(就是pc的下一个)
pc=pa; //(pa原来指向的结点)变成表Lc的新尾结点
pa=pa->next; //pa结点移向La下一个结点
}
else{
pc->next=pb; //(pb原来指向的结点)插在表Lc的尾结点之后(就是pc的下一个)
pc=pb; //(pb原来指向的结点)变成表Lc的新尾结点
pb=pb->next; //pa结点移向La下一个结点
}
if(pa){ //表La比表Lb长
pc->next=pa; //插入表La的剩余段
}
else{ //表Lb比表La长
pc->next=pb; //插入表Lb的剩余段
}
return La;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)