zoukankan      html  css  js  c++  java
  • 剑指offer 17:合并两个有序链表

      

    题目描述

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

    解题思路

    链表基础操作考察,难点在于对于输入数据的把握,一定要考虑输入数据的全面性

    1.出现单链表为NULL;

    2.两个链表都为NULL;

    3.一个链表遍历完成,另一链表还有剩余的节点

    4.两个链表等长;

    下面给出具体C++代码实现:

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
        {
            //边界检查
            if(pHead1==NULL){
                return pHead2;
            }
            if(pHead2==NULL){
                return pHead1;
            }
            ListNode *p1=pHead1,*p2=pHead2,*nHead=NULL;
            ListNode *q=NULL;
            //确定融合后的头结点
            if (p1->val<=p2->val){
                q = p1;
                p1=p1->next;
            }else{
                q = p2;
                p2=p2->next;
            }
            nHead=q;
            //设置两个指针分别指向两个链表,逐个取元素连接成新的链表
            while(p1!=NULL && p2!=NULL){
                if(p1->val<=p2->val){
                    q->next=p1;
                    p1=p1->next;
                    q=q->next;
                    
                }else{
                    q->next=p2;
                    p2=p2->next;
                    q=q->next;
                }
                
            }
            if(p1==NULL){
                q->next=p2;
            }else{
                q->next=p1;
            }       
            return nHead;
        }
    };
  • 相关阅读:
    Linux下修改oracle的SID
    Linux下卸载Oracle 11g
    eclipse中spring开发环境的配置
    在VMWare上安装Arch Linux
    Junit单元测试
    leaflet获取arcgis服务图层所有信息
    IE浏览器下AJAX缓存问题导致数据不更新的解决办法
    js对url进行编码和解码
    DOM对象和JQuery对象
    typeof()
  • 原文地址:https://www.cnblogs.com/fancy-li/p/11616133.html
Copyright © 2011-2022 走看看