合并两个已排序的链表
2016-06-17 15:32
316 查看
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:由于两个链表都已经排好序了,那么我们只要对比两个链表的当前头结点,并将较小的那个链接到新链表的后面即可。
注意:有可能一个链表已经遍历完了,另一个链表还没完,只需将剩下链表的元素对应拷入即可。
下面是我的代码实现,不足之处,欢迎批评指正。
/*
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* newhead=NULL;
ListNode* temp=NULL;
if(pHead1->val<pHead2->val) {
temp=pHead1;
pHead1=pHead1->next;
}
else {
temp=pHead2;
pHead2=pHead2->next;
}
newhead=temp;
while(pHead1&&pHead2){
if(pHead1->val<pHead2->val) {
temp->next=pHead1;
temp=temp->next;
pHead1=pHead1->next;
}
else {
temp->next=pHead2;
temp=temp->next;
pHead2=pHead2->next;
}
}
while(pHead1){
temp->next=pHead1;
temp=temp->next;
pHead1=pHead1->next;
}
while(pHead2){
temp->next=pHead2;
temp=temp->next;
pHead2=pHead2->next;
}
return newhead;
}
};
思路:由于两个链表都已经排好序了,那么我们只要对比两个链表的当前头结点,并将较小的那个链接到新链表的后面即可。
注意:有可能一个链表已经遍历完了,另一个链表还没完,只需将剩下链表的元素对应拷入即可。
下面是我的代码实现,不足之处,欢迎批评指正。
/*
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* newhead=NULL;
ListNode* temp=NULL;
if(pHead1->val<pHead2->val) {
temp=pHead1;
pHead1=pHead1->next;
}
else {
temp=pHead2;
pHead2=pHead2->next;
}
newhead=temp;
while(pHead1&&pHead2){
if(pHead1->val<pHead2->val) {
temp->next=pHead1;
temp=temp->next;
pHead1=pHead1->next;
}
else {
temp->next=pHead2;
temp=temp->next;
pHead2=pHead2->next;
}
}
while(pHead1){
temp->next=pHead1;
temp=temp->next;
pHead1=pHead1->next;
}
while(pHead2){
temp->next=pHead2;
temp=temp->next;
pHead2=pHead2->next;
}
return newhead;
}
};
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- [C/C++]反转链表
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 用VBScript写合并文本文件的脚本
- C#实现基于链表的内存记事本实例
- oracle列合并的实现方法
- 使用BAT一句话命令实现快速合并JS、CSS
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- SQL 合并多行记录的方法总汇
- C#模拟链表数据结构的实例解析
- C#实现简单合并word文档的方法
- C#自适应合并文件的方法
- C++联合体转换成C#结构的实现方法
- Node.js实现JS文件合并小工具
- C++高级程序员成长之路
- C++编写简单的打靶游戏