两个链表合并成一个链表
时间: 2023-06-12 13:02:59 浏览: 92
两个链表的合并
可以使用迭代的方法来实现两个链表的合并。具体步骤如下:
1. 新建一个头节点,将两个链表的头节点分别保存为指针p和q,同时新建一个指针cur指向头节点。
2. 遍历两个链表,比较p和q节点的值,将较小值的节点接入cur节点的后面,并将指针后移。
3. 如果其中一个链表已经遍历完了,直接将另一个链表接入cur节点的后面。
4. 遍历结束后返回头节点的下一个节点即为合并后的链表的头节点。
下面是使用C++实现的代码:
```c++
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode *dummy = new ListNode(0);
ListNode *cur = dummy;
ListNode *p = l1;
ListNode *q = l2;
while (p && q) {
if (p->val < q->val) {
cur->next = p;
p = p->next;
} else {
cur->next = q;
q = q->next;
}
cur = cur->next;
}
cur->next = p ? p : q;
return dummy->next;
}
```
其中,ListNode为链表节点的定义。函数mergeTwoLists接受两个链表的头节点作为参数,并返回合并后的链表的头节点。
阅读全文