链表合并问题(一)
设计将两个递增有序带头结点链表合并为一个有序递减的链表 void MergeList(LinkList & La,LinkList & Lb){
LNode *r,*pa=La->next, *pb=Lb->next;
//分别是表La和Lb的工作指针
La->next = NULL;
//La作为结果链表的头指针,先将结果链表初始化为空
while(pa&&pb){
//当两链表均不为空时,循环
if(pa->data<=pb->data){
r=pa->next;
//r暂存pa的后继结点指针
pa->next=La->next;
La->next=pa;
//将pa结点链于结果表中,同时逆置
pa=r;
//恢复pa为当前待结点
}else{
r=pb->next;
//r暂存pb的后继结点指针
pb->next=La->next;
//将pb结点链于结果表中,同时逆置
La->next=pb;
//恢复pb为当前待结点
pb=r;
}
if(pa)
pa=pb;
//通常情况下会剩一个链表非空,处理剩下的部分
while(pb){
//处理剩下的一个非空链表
r=pb->next;
【链表合并问题(一)】//依次插入到La中
pb->next=La->next;
La->next=pb;
pb=r;
}
Free(Lb);
}
}
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- jhipster|jhipster 升级无效问题
- “精神病患者”的角度问题
- 解决SpringBoot引用别的模块无法注入的问题
- leetcode|leetcode 92. 反转链表 II
- Hive常见问题汇总
- 姚老师互动问答会|姚老师互动问答会 # 问题001(如何更有智慧的和身边人分享金刚智慧())
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 【教育故事】|【教育故事】 一个“问题学生”的蜕变
- 蓝桥杯试题