描述
将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null
,2->null
, 返回 1->2->3->8->11->15->null
。
代码
一开始根本不输出,但是检测并没有给出错误原因。
第一考虑,是出现了死循环,反复检查循环,并没有发现这种错误
又考虑是指针空间没有释放,但是解决后还是不能输出
最后发现是空间申请的问题,少了
head = new ListNode;
导致Runtime Error
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/*
* @param l1: ListNode l1 is the head of the linked list
* @param l2: ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
ListNode * mergeTwoLists(ListNode * l1, ListNode * l2) {
// write your code here
ListNode *head, *h1, *h2, *p;
h1 = l1, h2 = l2;
head = new ListNode; head->next = NULL; p = head;
if(l1 == NULL) return l2;
if(l2 == NULL) return l1;
while(h1 != NULL && h2 != NULL)
{
if(h2->val < h1->val)
{
p->next = h2;
h2 = h2->next;
}
else{
p->next = h1;
h1 = h1->next;
}
p = p->next;
}
if(h1) p->next = h1;
if(h2) p->next = h2;
p = head->next;
free(head);
return p;
}
};