本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。\n\n函数接口定义:\nlist merge( list l1, list l2 );\n其中list结构定义如下:\n\ntype
时间: 2023-06-05 16:47:34 浏览: 229
需要实现一个函数,将两个链表表表示的递增整数序列合并为一个非递减的整数序列。
该函数的接口定义为:
list merge( list l1, list l2 );
其中,list结构定义如下:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
该函数的实现可以使用归并排序的思想,在l1和l2同时遍历的过程中,按照大小关系依次将节点加入合并后的链表中。
该函数的返回值为一个链表,代表合并后的非递减整数序列。
完整函数定义为:
ListNode* merge(ListNode* l1, ListNode* l2) {
if (l1 == NULL) return l2;
if (l2 == NULL) return l1;
ListNode* head = new ListNode(-1);
ListNode* cur = head;
while (l1 != NULL && l2 != NULL) {
if (l1->val <= l2->val) {
cur->next = l1;
l1 = l1->next;
} else {
cur->next = l2;
l2 = l2->next;
}
cur = cur->next;
}
if (l1 == NULL) cur->next = l2;
if (l2 == NULL) cur->next = l1;
return head->next;
}
阅读全文