用c++用链表两个有序表合并为一个有序表。
时间: 2024-02-22 12:54:53 浏览: 29
好的,我可以为您解答这个问题。
假设你已经有两个有序的链表,链表节点结构体如下:
```c++
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
```
现在要将两个链表合并为一个有序链表,可以使用双指针方法,将两个链表中较小的节点加入新的链表中,直到其中一个链表为空,然后将剩下的节点加入新的链表中。
下面是 C++ 代码实现:
```c++
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode *dummy = new ListNode(-1); // 建立哑节点
ListNode *cur = dummy;
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) {
cur->next = l1;
} else if (l2) {
cur->next = l2;
}
return dummy->next;
}
```
希望这个代码可以帮助到你!
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)