博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指Offer——合并两个排序的链表
阅读量:5248 次
发布时间:2019-06-14

本文共 1392 字,大约阅读时间需要 4 分钟。

题目描述:

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

分析:

苦力活,使用两个指针分别指向未被合并的两个链表的首部,比较两个首部数值的大小,合并数值小的结点,并且指针后移指向新的首部。

最后到了某一个链表的尾部之后,将尾部连接另一链表未被合并部分的首部。

代码:

1 /* 2 struct ListNode { 3     int val; 4     struct ListNode *next; 5     ListNode(int x) : 6             val(x), next(NULL) { 7     } 8 };*/ 9 class Solution {10 public:11     ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {12         if(pHead1 == NULL) return pHead2;13         if(pHead2 == NULL) return pHead1;14         ListNode* r = NULL;15         if(pHead1->val < pHead2->val) {16             r = pHead1;17             pHead1 = pHead1->next;18         } else {19             r = pHead2;20             pHead2 = pHead2->next;21         }22         ListNode* p = r;23         while(pHead1 || pHead2) {24             if(pHead1 == NULL) {25                 p->next = pHead2;26                 break;27             }28             if(pHead2 == NULL) {29                 p->next = pHead1;30                 break;31             }32             if(pHead1->val >= pHead2->val) {33                 p->next = pHead2;34                 p = p->next;35                 pHead2 = pHead2->next;36             } else {37                 p->next = pHead1;38                 p = p->next;39                 pHead1 = pHead1->next;40             }41         }42         return r;43     }44 };

 

转载于:https://www.cnblogs.com/jacen789/p/7743441.html

你可能感兴趣的文章
C5500工程调试失败问题
查看>>
POJ 2752 Seek the Name, Seek the Fame
查看>>
递归和动态规划
查看>>
css浮动布局小技巧
查看>>
Entity Framework实体模型 入门视频教程
查看>>
Repeater获取某一行TextBox值
查看>>
模态框案例
查看>>
2年内学习计划(更新中)
查看>>
Collections
查看>>
20165320 第二周课下作业补充
查看>>
华硕笔记本怎么设置u盘启动(两种方法)
查看>>
希尔排序
查看>>
java--Cookie和Session
查看>>
Appium+python自动化-元素定位uiautomatorviewer的使用
查看>>
iPhone设备字体详解
查看>>
java可变参数列表
查看>>
WebSocket 的后记
查看>>
ZooKeeper客户端 zkCli.sh 节点的增删改查
查看>>
ASP连接11种数据库语法总结
查看>>
[Android实例] 同一Activity的实例被多次重复创建
查看>>