合并两个有序的单链表

来源:互联网 发布:熊掌好吃吗 知乎 编辑:程序博客网 时间:2024/06/06 15:41

这里写图片描述

链表1和链表2是两个递增排序的单链表,合并这两个链表得到升序的链表如上图。

这里写图片描述
链表1的头结点的值小于链表2的头结点的值,所以链表1的头结点是合并后链表的头结点。(如图)在剩余的链表中,链表2的头结点的值小于链表1的头结点的值,因此链表2的头结点是剩余结点的头结点,把这个结点和之前合并好的链表的尾节点链接起来。(如图)递归可以得到合并后的新链表。

下面是一段参考代码:

#include <iostream>using namespace std;typedef struct ListNode{    int _data;    ListNode *_next;    ListNode(int data)        :_data(data)        ,_next(NULL)    {}}Node;Node *MergeList(Node *head1,Node *head2){    if (head1 == NULL)    {        return head2;    }    else if (head2 == NULL)    {        return head1;    }    Node *MergeListHead = NULL;    if (head1->_data < head2->_data)    {        MergeListHead = head1;        MergeListHead -> _next = MergeList(head1->_next,head2);    }    else    {        MergeListHead = head2;        MergeListHead -> _next = MergeList(head1,head2->_next);    }    return MergeListHead;}
原创粉丝点击