设ha和hb分别是两个带附加节点的非递减有序单链表的表头指针,试设计一个算法,将这两个有序链表合并成一个非递增的有序的单链表,要求结果链表仍使用原来的空间,不占用其他的储存空间,表中允许有重复的元素;
class Solution {
public:
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
ListNode* prehead=new ListNode(-1);//创建哑节点并初始化为-1
while(list1!=nullptr&&list2!=nullptr)//当两个链表非空的时候
{
if(list1->val<list2->val||list1->val==list2->val)//获取较小的值
{
prehead->next=list1;
list1=list1->next;//向下移动
}
else{
prehead->next=list2;
list2=list2->next;
}
prehead->next=prehead;//注意这里的连接
}
prehead->next=list1==nullptr?list1:list2;//判断有个为空的情况
return prehead->next;
}
};