***单链表操作之合并两个单链表***

/*  本篇博客为合并两个单链表, 有序和无序都可以; 其中用到单链表的尾插和单链表的选择排序;
@单链表排序之选择排序链接:http://blog.csdn.net/bitboss/article/details/51602544;
代码中大部分操作都在单链表基本操作详解中介绍过,这里就直接上代码;
*/
代码:
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>typedef int DataType;typedef struct LinkNode
{DataType data;struct LinkNode* next;
}LinkNode,*pLinkNode;//结点结构体typedef struct LinkList
{LinkNode* pHead;//头结点指针
}LinkList ,*pLinkList;//链表void InitLinkList(pLinkList pList)
{assert(pList);pList->pHead = NULL;}//初始化列表void PushBack(pLinkList pList,DataType x)
{pLinkNode cur = NULL;pLinkNode pvr = NULL;pLinkNode newNode = (pLinkNode)malloc(sizeof(LinkNode ));if(newNode == NULL){printf("out of memory\n");exit(0);   }assert(pList);cur = pList ->pHead ;newNode ->data = x;newNode ->next = NULL;if(cur == NULL){pList ->pHead  = newNode ;return;}while(cur){pvr = cur;cur = cur->next ;}pvr->next  = newNode ;}//尾插void PrintList(pLinkList pList)
{pLinkNode cur = NULL;assert(pList);cur = pList->pHead ;while( cur!=NULL ){printf("%d->",cur->data );cur = cur->next ;}printf("over\n");
}//打印void SelectSort(pLinkList pList)//选择排序单链表
{pLinkNode p = NULL;pLinkNode q = NULL;assert(pList);for(p = pList ->pHead ;p!=NULL; p = p->next ){for(q = p->next;q!=NULL; q = q->next ){if(p->data > q->data ){DataType tmp = q->data ;q->data  = p->data ;p->data = tmp;}}}
}pLinkNode  Merge(pLinkList pList1, pLinkList pList2)
{pLinkNode  cur = NULL;pLinkNode front = NULL;assert(pList1 || pList2 );if(pList1->pHead  != NULL)//如果第一个链表不为空才将它当作合并好的链表的头;cur = pList1->pHead ;else //第一个链表则返回第二个链表的头指针,不需要考虑第二个链表是否为NULL;{return pList2->pHead ;}//合并两个单链表,就只需要找到一个的尾将另外一个链上去就好了;while(cur && cur->next ){cur = cur->next ;}cur->next = pList2 ->pHead ;return pList1 ->pHead ;//最后返回第一个链表的头指针;
}void test()
{pLinkNode ret = NULL;//接收合并函数的返回值;/*   自己定义两个链表用来测试 */LinkList List1 ;LinkList List2 ;InitLinkList(&List1);InitLinkList(&List2);PushBack(&List1, 2);PushBack(&List1, 6);PushBack(&List1, 4);PushBack(&List2, 1);PushBack(&List2, 3);PushBack(&List2, 5);ret = Merge(&List1,&List2);//接收到返回值List1.pHead = ret;//将新的头指针放到链表1的头中SelectSort(&List1);//调用排序函数;PrintList(&List1);//打印链表;
}
int main()
{test();system("pause");return 0;
}
END!

单链表操作之合并两个单链表相关推荐

  1. python创建一个有序链表_Python实现合并两个有序链表的方法示例

    本文实例讲述了Python实现合并两个有序链表的方法.分享给大家供大家参考,具体如下: 思路:先选出第一个节点,然后遍历两个链表,把小的作为当前节点的下一个节点,一直到其中一个链表遍历完,这时候把另一 ...

  2. (不带头结点的)单链表增删查改,逆置单链表(两种方法),求两个单链表的第一个公共结点,合并两个单链表,单循环链表中判断第一个入环点,约瑟夫环

    补充了每个算法的基本思想,并且画了思路图,源代码都经过调试成功 1.SlistNode.c文件 (1) (不带头结点的)单链表增删查改 #include "SlistNode.h" ...

  3. 链表问题19——合并两个有序的单链表

    题目 给定两个有序单链表的头节点head1和head2,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头节点. 思路 本题较为简单,假设两个链表的长度分别为M和N,直接给出时间复杂度为O ...

  4. 合并两个有序链表(递归)

    合并两个有序链表(递归) 题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 输入:1->2->4, 1->3->4 ...

  5. 【Java】leetCode 21 合并两个有序链表

    题目 : 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 解题思路 : 1.依据以上两个升序链表进行拼接: 2.先定义一个傀儡节点newHead,用来 ...

  6. fastreport 打印两个list_Smaller And Smarter Python数据结构:合并两个有序链表

    原创: 老表 简说Python 今日问题 :翻转链表k个相邻结点 """目标:写一段程序,合并两个有序链表例如:输入-> 1->2->3输入-> ...

  7. python合并两个有序列表_Python实现合并两个有序链表的方法示例

    本文实例讲述了Python实现合并两个有序链表的方法.分享给大家供大家参考,具体如下: 思路:先选出第一个节点,然后遍历两个链表,把小的作为当前节点的下一个节点,一直到其中一个链表遍历完,这时候把另一 ...

  8. 合并两个有序链表,合并后依然有序

    合并两个有序链表合并之后还是有序的,首先这两个链表是需要是有序的,也就是说这两个链表已经排好序了,才能进行合并.但是昨天也写过冒泡排序的程序了,如果让你合并两个不是有序的链表合并之后有序,那可以先将两 ...

  9. 【LeetCode】21、合并两个有序链表

    21.合并两个有序链表 题目: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例1: 输入:l1 = [1,2,4], l2 = [1,3,4] ...

最新文章

  1. POJ 2112 Optimal Milking(二分+最大流)
  2. 国内第1本jBPM专著即将隆重上市!
  3. 二进制安装 kubernetes 1.12(三) - 部署 Master 节点组件
  4. 布尔类型和三目运算符
  5. Java集合篇:ConcurrentHashMap详解(JDK1.8)
  6. python 入门到实践期末考试常出现的考试内容_Python编程入门到实践—列表篇(一)...
  7. 接口-----java
  8. ELK(elasticsearch5.0)head插件安装配置
  9. 数字一阶低通滤波器立体解析
  10. 第六章 用正三和弦为含跳进旋律配和声
  11. 自己动手打造mini型QQ
  12. JavaScript 数组拼接打印_JavaScript 中的“黑话”
  13. mysql的groupby_MYSQL GROUP BY用法详解
  14. Phunware在全球发行Phun实用型代币
  15. micropython按键检测_TM1650按键扫描
  16. Ajax 和 XML: 五种 Ajax 反模式
  17. 史上最全 | HBase 知识体系吐血总结
  18. QT程序按钮效果制作
  19. MySQL基础知识(1)
  20. 华硕ASUS-X53S拆机升级

热门文章

  1. java浪漫代码_程序员表白代码,用过的人都找到了对象...
  2. CLIENT_ACKNOWLEDGE机制测试
  3. buct编译原理个人作业
  4. 初学者入门阿里云haas510开板式DTU(2.0版本)--510-AS
  5. 工作杂谈001-供应商对接
  6. thinkpad x250装黑苹果教程_[黑苹果]x250 黑苹果历险记
  7. 计算机中什么符号代表除号,电脑怎么打除号?word除号怎么打出来?键盘上÷号是哪个键?除以符号电脑怎么打?...
  8. JS实现邮箱提示补全效果
  9. Macbook无法开机?如何尝试自救
  10. 论文研读1——对抗样本(Adversarial Example)综述(2018版)