合并两个有序的链表

该问题可以看做一个递归问题,首先比较两个链表的首节点,然后选择比较小的一个,接着把剩下的再作为一个整体。。。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if(l1 == NULL)//递归程序中最关键的就是终止条件
          return l2;
        else if(l2 == NULL)
          return l1;
          
        ListNode* pMergedHead = NULL;
        if(l1 -> val < l2 -> val){
            pMergedHead = l1;
            pMergedHead -> next = mergeTwoLists(l1 -> next, l2);
        }
        else{
            pMergedHead = l2;
            pMergedHead -> next = mergeTwoLists(l1, l2 -> next);
        }
        
        return pMergedHead;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问题描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 有的时候还...
    zxcvbnmzsedr阅读 2,241评论 0 1
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 10,610评论 0 12
  • 【声明】欢迎转载,但请保留文章原始出处→_→文章来源:http://www.jianshu.com/p/08d08...
    梦工厂阅读 9,151评论 3 31
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 9,934评论 1 31
  • 转载请注明出处:http://www.jianshu.com/p/c65d9d753c31 在上一篇博客《数据结构...
    Alent阅读 8,824评论 4 74