7
来源:互联网 发布:sql中的update语句 编辑:程序博客网 时间:2024/04/30 16:17
问题
假设有两个按元素值递增次序排列的线性表,均以单链表形式存储,请编写算法将这两个单链表归并为一个按元素值递减次序排列的单列表,并要求利用原来两个单链表的结点存放归并后的单链表。
分析
两个链表均是按元素值递增次序排列,从头开始遍历链表l1和l2,假设合并后的链表存到l1中,则首先将l1置为空表,此时,如果l1对应结点的值小于l2对应结点的值,则将l1对应的结点插入到新的l1中,否则,将l2对应的结点插入到l1中。
代码
typedef int ElemType;typedef struct LNode { ElemType data; struct LNode * next;}LNode, *LinkList;void mergeList(LinkList &l1, LinkList &l2){ LNode *p = l1 -> next, *q = l2 -> next;///p和q分别指向l1和l2头结点下一个结点 l1 -> next = NULL;///将l1置空,保存新的链表 LNode *r = l1;///使用尾插法建立新的链表 while(p && q) {///p和q两个工作指针遍历链表 if(p -> data < q -> data) {///l1对应的结点的值小于l2对应的结点的值 LNode *p1 = p -> next; p -> next = NULL; r -> next = p; r = r -> next; p = p1; }else {///l1对应的结点的值大于l2对应的结点的值 LNode *q1 = q -> next; q -> next = NULL; r -> next = q; r = r -> next; q = q1; } } ///p和q有一个到了链尾,如果是q到了链尾,那么q指向p,如果p到了链尾,那刚好 if(p) { q = p; } r -> next = q;}
源代码
http://123.206.59.223:8080/code/code/7.rar
0 0
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 7
- 学习笔记03 Linux
- libevent中的event结构体
- HTML+CSS基础 ul标签创建一个以黑色实心圆圈开头的无序列表
- [计算机网络复习总结]
- Chrome浏览器常用插件(三)
- 7
- C#实现过滤框
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛 C.A Simple Job map<string, map<string, int> > 、字符串单词词组的处理
- 随便练得玩的
- 进程间通信-信号(售票员、司机上下车问题)
- one day
- make file中更改unity ProjectSettings.asset设置
- 读了很多书也忘了很多,那么读书的意义在哪里?
- nyoj 街区最短路径