求两个已排序单链表中相同的数据(C语言)
2016-04-14 20:07
561 查看
PSListNode ByeNode(DataType data) { PSListNode pNewNode = (PSListNode)malloc(sizeof(struct SListNode)); if (NULL != pNewNode) { pNewNode->data = data; //注意使开辟的新节点的指向为空 pNewNode->pNextNode = NULL; } return pNewNode; } PSListNode UnionSet(PSListNode pL1, PSListNode pL2) { PSListNode PSList1 = pL1; PSListNode PSList2 = pL2; PSListNode pNewHead = NULL; PSListNode pNode = NULL; //每次比较两个链表头指针指向的数据是否相等,不相等,就让数据小的头指针后移,相等,则把该数据保存起来, //两个头指针同时后移,直到其中一个指向空为止 while ((NULL == PSList1) || (NULL == PSList2)) { if (PSList1->data > PSList2->data) { PSList2 = PSList2->pNextNode; } else if (PSList1->data < PSList2->data) { PSList1 = PSList1->pNextNode; } //用一个新的链表来保存两个链表中相同的数据 else { if (pNewHead == NULL) { pNewHead = ByeNode(PSList1->data); pNode = pNewHead; PSList1 = PSList1->pNextNode; PSList2 = PSList2->pNextNode; } else { pNode = pNode->pNextNode; pNode = ByeNode(PSList1->data); PSList1 = PSList1->pNextNode; PSList2 = PSList2->pNextNode; } } } return pNewHead; }
相关文章推荐
- 求链表相交时的交点(C语言)
- 判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】(C语言)
- 判断两个链表是否相交,若相交,求交点。(假设链表不带环)(C语言)
- 判断单链表是否带环?若带环,求环的长度?求环的入口点?(C语言)
- 查找单链表的倒数第k个节点,要求只能遍历一次链表(C语言)
- c++第3次作业
- 查找单链表的中间节点,要求只能遍历一次链表(C语言)
- 合并两个有序链表,合并后依然有序(C语言)
- C++中operator的主要用法
- 单链表排序(冒泡排序)(C语言)
- leetcode21题 题解 翻译 C语言版 Python版
- c++ json封装---解析
- c++第二次作业
- ActiveX(MFC)控件——添加接口及WEB调用
- C++ string类的实现
- int、long、long long取值范围
- C++创建文件夹
- VC 字符串转化和分割
- C++打印日志功能设计
- C++基本语法-----template