全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 区块链 >

合并两个排序的链表

时间:2018-01-16 22:02

人气:

作者:admin

标签: 两个  排序  合并    链表 

导读:合并两个排序的链表-合并两个排序的链表一、题目要求 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 二、我的思路 1、比较两...

合并两个排序的链表 一、题目要求

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

二、我的思路

1、比较两个链表的头结点大小,哪个小就将其作为新链表的头结点;
2、依次比较两个链表节点的大小,将一个链表合并到另一个链表中;
3、合并完之后,剩余部分合并到新链表最后;

我的代码 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1 == NULL) return pHead2; if(pHead2 == NULL) return pHead1; ListNode *head = NULL; if(pHead1->val <= pHead2->val){ head = pHead1; pHead1 = pHead1->next; } else{ head = pHead2; pHead2 = pHead2->next; } ListNode *p = head; while(pHead1 && pHead2){ if(pHead1->val <= pHead2->val){ p->next = pHead1; pHead1 = pHead1->next; } else{ p->next = pHead2; pHead2 = pHead2->next; } p = p->next; } if(pHead1) p->next = pHead1; else if(pHead2) p->next = pHead2; return head; } };

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信