合并两个有序链表c++
时间: 2023-05-27 15:06:05 浏览: 146
21合并两个有序链表.zip
算法思路:
1.定义一个新链表result,将两个链表中的节点按照大小顺序逐个加入result中。
2.当其中一个链表为空时,直接将另一个链表中的剩余节点加入result中。
3.最后返回result即为合并后的有序链表。
代码实现:
```
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* result = new ListNode(0); // 定义新链表result,初始值为0
ListNode* cur = result; // 定义指针cur指向result
while (l1 != nullptr && l2 != nullptr) { // 当其中一个链表为空时结束循环
if (l1->val <= l2->val) { // 如果l1的节点值小于等于l2的节点值
cur->next = l1; // 将l1的节点加入result中
l1 = l1->next; // l1指针后移
} else { // 如果l1的节点值大于l2的节点值
cur->next = l2; // 将l2的节点加入result中
l2 = l2->next; // l2指针后移
}
cur = cur->next; // cur指针后移
}
if (l1 != nullptr) { // 如果l1链表不为空,则将l1中剩余的节点加入result中
cur->next = l1;
}
if (l2 != nullptr) { // 如果l2链表不为空,则将l2中剩余的节点加入result中
cur->next = l2;
}
return result->next; // 返回result中的节点即为合并后的有序链表
}
};
```
阅读全文