zoukankan      html  css  js  c++  java
  • 。。。剑指Offer之——合并两个排序的链表。。。

     1 public ListNode Merge(ListNode list1, ListNode list2) {
     2 //        list1,list2中,只要有一个是空的,则返回另外一个链表
     3         if (list1 == null) {
     4             return list2;
     5         }
     6         if (list2 == null) {
     7             return list1;
     8         }
     9 //        新建一个链表
    10         ListNode k = new ListNode(Integer.MIN_VALUE);
    11 //        新建一个头指针,指向新建的链表
    12         ListNode head = k;//k其实是用来迭代合并之后的链表
    13 //        p指针用来迭代list1,q指针用来迭代list2
    14         ListNode p = list1, q = list2;
    15         while (p != null && q != null) {
    16 //            哪一个值小,k就指向谁
    17             if (p.val > q.val) {
    18                 k.next = q;
    19                 k = q;
    20                 q = q.next;//往后移动
    21             } else {
    22                 k.next = p;
    23                 k = p;
    24                 p = p.next;//往后移动
    25             }
    26         }
    27 //        最终如果q提前结束(q==null),p不为空,则直接把p挂到k的后面
    28         if (p != null) {
    29             k.next = p;
    30         }
    31 //        最终如果q提前结束(p==null),q不为空,则直接把q挂到k的后面
    32         if (q != null) {
    33             k.next = q;
    34         }
    35 //        真正的头节点是原来新建k节点的下一个节点,因为k是新建的节点,
    36 //        合并之后,k节点其实不属于最终合并之后的链表
    37         return head.next;
    38     }
  • 相关阅读:
    QGIS 编译
    Ubuntu: 无法使用su命令
    win7 与 Ubuntu 16.04 文件传送
    OSGEarth编译
    GADL配置编译
    C++ 类对象和 指针的区别
    C++ Primer Plus 第六版笔记
    Windows下使用doxygen阅读和分析C/C++代码
    _MSC_VER详细介绍
    LUA学习之一 初次接触
  • 原文地址:https://www.cnblogs.com/yingmeng/p/10777971.html
Copyright © 2011-2022 走看看