leetcode【链表】-----21. Merge Two Sorted Lists(合并两个有序链表)
1、题目描述

2、分析
输入两个有序链表,合并链表,合并之后依旧是有序的。我们只需要创建一个新节点,然后比较按顺序比较两个链表的值,将小的插入到新节点之后,然后移动指针。如果有一个链表结束,把另一个插入到指针之后。
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) {
if(l1==NULL) return l2;
if(l2==NULL) return l1;
ListNode* NewNode=new ListNode(0);
ListNode* cur=NewNode;
while(l1&&l2){
if(l1->val<=l2->val){
cur->next=l1;
l1=l1->next;
}
else{
cur->next=l2;
l2=l2->next;
}
cur=cur->next;
}
if(l1==NULL) cur->next=l2;
if(l2==NULL) cur->next=l1;
return NewNode->next;
}
};
4、相关知识点
链表通常操作中需要新建一个节点,使用新节点来进行操作。

浙公网安备 33010602011771号