Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
题目大意:合并两个有序链表,要求新链表的节点由合并之前的两个链表拼接而成。
解题思路:类似于归并排序,利用二级指针处理头结点的问题。
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode *mergeTwoLists(struct ListNode *l1, struct ListNode *l2) {
struct ListNode *head = NULL;
struct ListNode **now = &head;
struct ListNode *ptr1 = l1;
struct ListNode *ptr2 = l2;
while(ptr1 && ptr2){
if(ptr1->val < ptr2->val){
*now = ptr1;
ptr1 = ptr1->next;
}else{
*now = ptr2;
ptr2 = ptr2->next;
}
now = &(*now)->next;
}
if(ptr1) *now = ptr1;
if(ptr2) *now = ptr2;
return head;
}