zoukankan      html  css  js  c++  java
  • 5-输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则

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

    • 代码如下
      1 public class Demo4 {
      2 
      3     public static void main(String[] args) {
      4         // 先创建多个节点,供测试使用
      5         ListNode listNode1 = new ListNode(1);
      6         ListNode listNode2 = new ListNode(2);
      7         ListNode listNode3 = new ListNode(6);
      8         ListNode listNode4 = new ListNode(14);
      9         ListNode listNode5 = new ListNode(15);
     10         // 把各个节点链起来
     11         listNode1.next = listNode2;
     12         listNode2.next = listNode3;
     13         listNode3.next = listNode4;
     14         listNode4.next = listNode5;
     15         listNode5.next = null;
     16         
     17         ListNode listNode6 = new ListNode(6);
     18         ListNode listNode7 = new ListNode(7);
     19         ListNode listNode8 = new ListNode(10);
     20         ListNode listNode9 = new ListNode(11);
     21         ListNode listNode10 = new ListNode(13);
     22         listNode6.next = listNode7;
     23         listNode7.next = listNode8;
     24         listNode8.next = listNode9;
     25         listNode9.next = listNode10;
     26         listNode10.next = null;
     27 
     28         System.out.println("原始链表1中的数据如下:");
     29         printList(listNode1);
     30         System.out.println("
    原始链表2中的数据如下:");
     31         printList(listNode6);
     32         
     33         System.out.println("
    
    合并之后的链表数据如下:");
     34         ListNode mergeHead = Merge(listNode1, listNode6);
     35         printList(mergeHead);
     36     }
     37     
     38     /**
     39      * 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
     40      */
     41     public static ListNode Merge(ListNode list1,ListNode list2) {
     42         if(list1 == null) return list2;
     43         if(list2 == null) return list1;
     44         
     45         ListNode res = null;
     46         if(list1.val < list2.val){
     47             res = list1;
     48             res.next = Merge(list1.next, list2);
     49         }else{
     50             res = list2;
     51             res.next = Merge(list1, list2.next);
     52         }
     53         return res;
     54     }
     55     
     56     /**
     57      * 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
     58      */
     59     public static ListNode myMerge(ListNode list1,ListNode list2) {
     60         if(list1 == null) return list2;
     61         if(list2 == null) return list1;
     62         ListNode mergeHead = null;
     63         ListNode current = null;
     64         while(list1 != null && list2 != null){
     65             if(list1.val <= list2.val){
     66                 if(mergeHead == null){
     67                     mergeHead = current = list1;
     68                 }else{
     69                     current.next = list1;
     70                     current = current.next;
     71                 }
     72                 list1 = list1.next;
     73             }else{
     74                 if(mergeHead == null){
     75                     mergeHead = current = list2;
     76                 }else{
     77                     current.next = list2;
     78                     current = current.next;
     79                 }
     80                 list2 = list2.next;
     81             }
     82         }
     83         if(list1 == null){
     84             current.next = list2;
     85         }else{
     86             current.next = list1;
     87         }
     88         return mergeHead;
     89     }
     90 
     91     /**
     92      * 遍历单链表
     93      * @param listNode
     94      */
     95     public static void printList(ListNode listNode) {
     96         ListNode tempNode = listNode;
     97         while(tempNode != null){
     98             System.out.printf("%d	",tempNode.val);
     99             tempNode = tempNode.next;
    100         }
    101     }
    102 }
    1 public class ListNode {
    2     int val;
    3     ListNode next = null;
    4 
    5     public ListNode(int val) {
    6         this.val = val;
    7     }
    8 }
    • 运行结果

  • 相关阅读:
    apns libcurl
    apns libcurl
    epoll
    epoll
    Linux服务器压测
    Linux服务器压测
    libevent
    libevent
    shell脚本
    shell脚本
  • 原文地址:https://www.cnblogs.com/sun-/p/12680827.html
Copyright © 2011-2022 走看看