加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

【数据结构】单链表—合并两个排序链表 — 递归

发布时间:2020-12-15 05:57:45 所属栏目:安全 来源:网络整理
导读:题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍使按照递增排序的。 思路: 代码如下: templateclass T struct ListNode{ T _value; ListNode T * _ next ; ListNode(const T value) :_value(value),_ next ( NULL ) {}};templateclass

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍使按照递增排序的。

思路:

代码如下:

template<class T>
struct ListNode
{
    T _value;
    ListNode<T>* _next;

    ListNode(const T& value)
        :_value(value),_next(NULL)
    {}
};

template<class T>
class List
{
public:
    List()
        :_head(NULL)
    {}
    bool PushBack();
    ListNode<T>* Merger(ListNode<T>* head)
    {
        return _Merger(_head,head);
    }

    ListNode<T>* _Merger(ListNode<T>* head1,ListNode<T>* head2)//合并两个有序链表,返回新链表的指针
    {
        if(head1 == NULL)
            return head2;
        if(head2 ==NULL)
            return head1;

        ListNode<T>* NewHead = NULL;
        if(head1->_value < head2->_value)//_head为新链表头节点
        {
            NewHead = head1;
            NewHead->_next = _Merger(head1->_next,head2);
        }
        else
        {
            NewHead = head2;
            NewHead->_next = _Merger(head1,head2->_next );
        }
        return NewHead;//一定要给上一层返回!
    }
private:
    ListNode<T>* _head;
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读