zoukankan      html  css  js  c++  java
  • 合并两个有序链表

    1、要求:

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

    2、核心处理代码(递归方式)

    思路:

      (1)判断否有其中一个或两个是空链表,如果是只有1个为空,则返回非空的链表;如果两个都为空,则返回第一个判断的链表;

      (2)找到两个链表中最小的元素,作为新链表的头结点;然后把新头结点的下一个作为被选出头结点的那个链表的头,继续比较;

    struct ListNode {
    	int val;
    	struct ListNode *next;
    	ListNode(int x) :val(x), next(NULL) 
            {
    	}
    };
    
    // 处理函数
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) 
    {
            if(pHead1==NULL)
                return pHead2;
            else if(pHead2==NULL)
                return pHead1;
            
            ListNode* newhead=NULL;
            if(pHead1->val<pHead2->val)
            {
                newhead = pHead1;
                newhead->next = Merge(pHead1->next,pHead2);
            }
            else
            {
                newhead = pHead2;
                newhead->next = Merge(pHead1,pHead2->next);
            }
            return newhead;
    } 
    

      

  • 相关阅读:
    Java 线程池学习
    Java线程:新特征-线程池
    创建Java线程池
    JAVA-线程安全性
    java线程安全总结
    栈和队列
    历年题目
    蓝桥杯算法训练
    hdu2083 暴力水
    poj 2299
  • 原文地址:https://www.cnblogs.com/veis/p/12623601.html
Copyright © 2011-2022 走看看