此次作业一开始犯了两个错误:
1. 新建节点时,应该使用new进行创建,要理解清楚节点和指针的区别
2. 在之后拼接时,一开始错误的使用了while,导致无限循环,引起超时,注意if和while的使用
3.头指针和尾指针的使用
//Definition for singly-linked list.
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution{
public:
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2){
//ListNode *ret = ListNode(0);写法错误,均差一个new
//ListNode *l3 = ListNode(min(l1->val,l2->val));
ListNode *ret = new ListNode(0);//新节点一定要重新分配内存
ListNode *L1 = l1;
ListNode *L2 = l2;
ListNode *L3 = ret;
while(L1&&L2){
if(L1->val < L2->val){
L3->next = L1;
L3 = L3->next;
L1 = L1->next;
}
else{
L3->next = L2;
L3 = L3->next;
L2 = L2->next;
}
}
//while(L1)之前最开始的时候,用的while,这样会无限循环下去。
if(L1){
L3->next = L1;
}
if(L2){
L3->next = L2;
}
return ret->next;
}
};