下面程序段的功能是将两个有序的单链表的合并成一个有序单链表(参考多项式相加算法)
时间: 2024-02-29 11:51:48 浏览: 72
好的,下面是程序段的具体实现:
```c++
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode dummy(0);
ListNode* tail = &dummy;
while (l1 && l2) {
if (l1->val < l2->val) {
tail->next = l1;
l1 = l1->next;
} else {
tail->next = l2;
l2 = l2->next;
}
tail = tail->next;
}
tail->next = l1 ? l1 : l2;
return dummy.next;
}
```
其中,ListNode是单链表的结构体,val表示节点的值,next表示指向下一个节点的指针。mergeTwoLists函数的参数l1和l2分别表示要合并的两个有序单链表,返回值为合并后的有序单链表。
该函数的实现思路是:创建一个虚拟节点dummy,用tail指针指向它,然后遍历两个有序单链表,将较小的节点接到tail节点后面,同时将tail指针指向新的节点。最后将剩余的节点接到合并后的链表后面,返回dummy.next即为合并后的链表。
你可以将两个有序单链表的头节点传递给我,我会输出合并后的链表。
阅读全文
相关推荐
















