题目链接
LeetCode 21. Merge Two Sorted Lists
题目描述
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.
Example:
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
解题思路
1、设有头结点指针head1,head2分别对应两个链表
2、从头结点开始依次比较结点值
3、如果head1的值小于等于head2,则将head1加入到新链表并向后移动一位,否则head2加入新链表并向后移动一位
4、重复3操作直至有一个链表达到尾结点
5、将剩余的链表结点直接放入新链表
代码
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* head = new ListNode(0);
ListNode* p = head;
while (l1 != NULL && l2 != NULL){
int x = (l1->val <= l2->val) ? l1->val : l2->val;
ListNode* new_node = new ListNode(x);
p->next = new_node;
p = p->next;
(l1->val <= l2->val) ? l1 = l1->next : l2=l2->next;
}
p->next = (l1 == NULL) ? l2 : l1;
return head->next;
}
};