//递归的方法
LinkList mergeTwoList2(LinkList l1,LinkList l2)
{
if(l1 == NULL)
{
return l2;
}
if(l2 == NULL)
{
return l1;
}
else if(l1->data <= l2->data)
{
l1->next = mergeTwoList2(l1->next, l2);
return l1;
}
else
{
l2->next = mergeTwoList2(l1,l2->next);
return l2;
}
}
//迭代
//迭代
LinkList mergeTwoList1(LinkList La, LinkList Lb)
{
LinkList prehead = new Lnode;
prehead->next = NULL;
Lnode* prev = prehead;
while (La != NULL && Lb != NULL) {
if (La->data <= Lb->data)
{
prev->next = La;
La = La->next;
}
else
{
prev->next = Lb;
Lb = Lb->next;
}
prev = prev->next;
}
// 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
prev->next = (La == NULL) ? Lb : La;
cout<<prev->data<<endl;
cout<<prehead->data<<endl;
cout<<prehead->next->data<<endl;
return prehead->next->next;
}
//前指针反转
struct ListNode* reverseList(struct ListNode* head){
if(head == NULL || head->next == NULL)
return head;
struct ListNode* newhead = NULL;
struct ListNode* cur = head;
struct ListNode* temp;
while(cur != NULL)
{
//将当前节点的下节点保存下来
temp = cur->next;
cur->next = newhead;
newhead = cur;
cur = temp;
}
return newhead;
}