合并两个由大到小的单链表为一个由小到大的单链表
时间: 2024-05-07 07:17:28 浏览: 45
c语言实现两个单链表的交叉合并方式
5星 · 资源好评率100%
好的,这个问题的解法如下:
首先,我们声明一个新的头节点new_head,以及两个指针p和q,分别指向两个链表的头节点。
然后,我们比较p和q所指向节点的值的大小,将较小的节点插入新链表中,并将指针向后移动一个节点。具体实现如下:
```
//合并两个有序链表为一个有序链表
node* mergeList(node* head1, node* head2)
{
node* new_head = new node(0); //声明新链表的头节点
node* p = head1;
node* q = head2;
node* cur = new_head; //cur指向新链表的尾节点
while (p && q)
{
if (p->val < q->val)
{
cur->next = p; //将较小节点插入新链表中
cur = p; //更新新链表的尾节点为p
p = p->next; //指针后移一个节点
}
else
{
cur->next = q;
cur = q;
q = q->next;
}
}
//将剩余节点插入新链表中
if (p)
cur->next = p;
else
cur->next = q;
node* res = new_head->next; //保存新链表的头节点
delete new_head; //释放新链表的头节点
return res;
}
```
希望这个回答能够帮到你。如果您还有其他问题,请随时问我。
阅读全文