zoukankan      html  css  js  c++  java
  • 合并链表

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
      class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }
    public class Solution {
        public ListNode Merge(ListNode list1,ListNode list2) {
     
       ListNode MergeNode=null;
              ListNode node=null;
               if(list1==null){
                   return list2;
                 }
               if(list2==null){
                     return list1;
               }
               while(list1!=null&&list2!=null){
                   if(list1.val<=list2.val){
                       if(MergeNode==null){
                       MergeNode=node=list1;
                       }else{
                        node.next=list1;
                        node=node.next;
                        
                       }
                       list1=list1.next;
                   }else{
                       if(MergeNode==null){
                       MergeNode=node=list2;
                       }else{
                       node.next=list2;
                        node=node.next;
                       
                       }
                        list2=list2.next;
                   }
                  
               }
               if(list1==null){
                   node.next=list2;
               }else{
                  node.next=list1;
               }
               return MergeNode;
    
        }
    }

    通过这个题真的是受益匪浅,前面遇到过的很多问题也是得到了解决。当对一个链表进行操作的时候,应该用他的替代者进行操作,不然他会不断地覆盖下一个。比如

    我想实现一个链表node1,向其里面不断地添加元素
    ListNode node1=new  ListNode(5);
            ListNode node2=null;
            for(int i=0;i<5;i++){
                node1.next=new ListNode(i);
                node1=node1.next;
            }
            while(node1!=null){
                System.out.println(node1.val);
                node1=node1.next;
            }

    如果我这么做,最后链表里面只会剩下一个4,因为他会不断指向新的节点,而不是把他链接起来。而如果

            ListNode node1=new  ListNode(5);
            ListNode node2=null;
            node2=node1;
            for(int i=0;i<5;i++){
                node2.next=new ListNode(i);
                node2=node2.next;
            }
            while(node1!=null){
                System.out.println(node1.val);
                node1=node1.next;
            }

    用一个node2代表node1去做这件事。node1就保存了5 0 1 2 34 五个节点。

    首先

    node2相当于一个指针移动。

  • 相关阅读:
    Linux ping 命令
    Linux ab 命令
    存储过程统计年月日的访问人数
    Struts Upload上传文件
    struts json登录
    javaScript没有块级作用域
    ThreadLocal(一):Thread 、ThreadLocal、ThreadLocalMap
    BeanUtils 学习教程
    WeakHashMap 理解笔记
    javaScript中的单引号与双引号
  • 原文地址:https://www.cnblogs.com/wxw7blog/p/7492189.html
Copyright © 2011-2022 走看看