题目链接:https://leetcode.com/problems/merge-two-sorted-lists/
题目的意思很是明确,把两个链表进行链接。然后,返回新的链表的首结点。
比较简单,由于很久没有写关于链表的东西了,一直因为越界等一些小小的问题而错误。还是需要多写。
Code:
//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 *ans;
/* 如果一个listnode 为空的话,那么这个指针直接为空吗?
* 也就是说,如何判断一个没有头结点的链表为空?
* Last executed input:
* 有关链表的题目的话,最好是注意越界等问题
* 先申请空间 然后再进行填值。
* 其实,还可以直接把下一个结点指向老的结点。
*/
ans = new ListNode(0);
ListNode *res = ans;
while(l1 != NULL || l2 != NULL){
if(l2 == NULL || (l1 != NULL && l2 != NULL && (l1->val < l2->val))){
ans->next = new ListNode(0);
ans = ans->next;
ans->val = l1->val;
l1 = l1->next;
}
else {
ans->next = new ListNode(0);
ans = ans->next;
ans->val = l2->val;
l2 = l2->next;
}
}
return res->next;
}
};