合并两个有序链表,合并后依然有序(C语言)
2016-04-14 19:57
525 查看
PSListNode MergeList(PSListNode pL1, PSListNode pL2) { PSListNode pNewNode = NULL; PSListNode pListNode1 = pL1; PSListNode pListNode2 = pL2; PSListNode pNode = NULL; if (NULL == pListNode1) { return pListNode2; } else if (NULL == pListNode2) { return pListNode1; } else { //先把新链表的头结点的指针找到,每次取两个链表中保存的数据较小的结点后插到新链表中 if (pListNode1->data > pListNode2->data) { pNode = pListNode2; pListNode2 = pListNode2->pNextNode; pNewNode = pNode; } else { pNode = pListNode1; pListNode1 = pListNode1->pNextNode; pNewNode = pNode; } //这样就只剩下其中一个链表的未比较的部分了,把它链接到新链表的最后即可 while ((NULL != pListNode1) && (NULL != pListNode2)) { if (pListNode1->data > pListNode2->data) { pNode->pNextNode = pListNode2; pListNode2 = pListNode2->pNextNode; pNode = pNode->pNextNode; } else { pNode->pNextNode = pListNode1; pListNode1 = pListNode1->pNextNode; pNode = pNode->pNextNode; } } //把其中一个链表剩下的部分链接到新链表的最后 if (NULL == pListNode1) { pNode->pNextNode = pListNode2; return pNewNode; } else { pNode->pNextNode = pListNode1; return pNewNode; } } }
相关文章推荐
- C++中operator的主要用法
- 单链表排序(冒泡排序)(C语言)
- leetcode21题 题解 翻译 C语言版 Python版
- c++ json封装---解析
- c++第二次作业
- ActiveX(MFC)控件——添加接口及WEB调用
- C++ string类的实现
- int、long、long long取值范围
- C++创建文件夹
- VC 字符串转化和分割
- C++打印日志功能设计
- C++基本语法-----template
- 逆置/反转单链表(C语言)
- 单链表实现约瑟夫环(JosephCircle)(C语言)
- 在无头单链表的一个非头节点前插入一个节点(C语言)
- c语言前n项求和如何实现?2个方法可行的
- 上周末没事写了一个UDP的例子 大家感兴趣的可以参考一下
- VC 自己封装简单的播放音频MCI类库
- iOS陆哥开发笔记(二十四) (C语言之内存四区和函数调用模型)
- C++11 标准新特性: 右值引用与转移语义