题解 | #合并两个排序的链表#
合并两个排序的链表
http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
- 记得刚开始的dummy node,同时申请一个指针指向这个dummynode
- 初始化两个指针指向两个头节点,这都是一般的操作。
/*
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&&!pHead2) return NULL;
ListNode* dummy = new ListNode(-1), *p = dummy;
ListNode* p1 = pHead1;
ListNode* p2 = pHead2;
while(p1&&p2){
if(p1->val>p2->val){
p->next = p2;
p2 = p2->next;
}else{
p->next = p1;
p1= p1->next;
}
p = p->next;
}
if(p1){
p->next = p1;
}
if(p2){
p->next = p2;
}
return dummy->next;
}
};算法解析 文章被收录于专栏
这里主要是算法岗的自我思路总结

