当前位置:   article > 正文

【C++代码】合并K个升序链表(递归方法)_合并k个升序的链表c++

合并k个升序的链表c++

这个题的思路和归并排序的思路一样。

归并的思想:递归地,或迭代地,将两个已经有序的数组或链表合并成一个有序的大数组或大链表。

       

       

       

先来看合并两个有序链表的代码:
        传入两个链表的头结点,new一个head节点当作合并后的链表的头结点,当两个链表都没有走到链尾的时候,将两链表的节点有序放入合并后的链表中。当某一个链表已经走到了链尾,此时把另一个链表剩下的部分接到合并后的链表尾部。
        返回head节点的下一个节点,因为head节点是new出来的,要记得delete释放掉这个节点的内存。

ListNode* mergeTwo(ListNode* l1,ListNode*l2){
   
		// new一个节点当作合并后的链表的头结点
        ListNode* head=new ListNode(0);
        ListNode* temp=head;
        // 当两个链表都没有走到链尾的时候,将两链表的节点有序放入合并后的链表中
        while(l1 && l2){
   
            if(l1->val <= l2->val){
   
                temp->next=l1;
                temp=temp->next;
                l1=l1->next;
            }else{
   
                temp-&
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号