如何将两个有序链表合成一个新的有序链表

基本思想

定义一个新链表,定义一个新链表的指针tempNode。当合并的两个链表的头节点指针都不指向空时,比较两个链表节点的值,找到里面较小的值的地址。让新链表的指针tempNode下一个节点指向该最小值的地址,然后让该较小值的地址头指针指向下个地址。当一个链表的头指针指向空时,把另一个链表剩下的地址都填到新链表后边。这样链表就合并成功。

图像解析

head1链表的指针指向了空就把tempNode指向head2指向的节点就行了。

代码

/*** 当前节点类,在堆内存当中创建节点*/
public class ListNode {public int value; // 数据域public ListNode next; // 下一个节点的地址域public ListNode(int value){this.value = value;}
}
//链表的管理类
public class LinkList {ListNode head = null;// 写一个方法,创建链表,链表的插入方法// 尾插法public void insert(int value) {ListNode listNode = new ListNode(value);if (head == null){head = listNode;return;}ListNode tempNode = head;while (tempNode.next !=null){tempNode = tempNode.next;}tempNode.next = listNode;
}// 输出链表的值public void printLink() {//定义右边指向链表当中的第一个节点ListNode tempNode = head;while (tempNode !=null){System.out.print(tempNode.value);tempNode = tempNode.next;}}
//合并两个有序链表
public void hebing(ListNode head1, ListNode head2) {ListNode headNode = new ListNode(0);ListNode tempNode = headNode;while (head1 != null && head2 != null) {if (head1.value < head2.value) {tempNode.next = head1;head1 = head1.next;} else {tempNode.next = head2;head2 = head2.next;}tempNode = tempNode.next;}if (head1 == null) {tempNode.next = head2;}if (head2 == null) {tempNode.next = head1;}head = headNode.next;}
}

实现代码

public class Main {public static void main(String[] args) {LinkList head2 = new LinkList();head2.insert(2);head2.insert(5);head2.insert(8);head2.insert(10);LinkList head1 = new LinkList();head1.insert(1);head1.insert(4);head1.insert(7);head1.insert(9);System.out.println("合并之前输出两个有序链表");System.out.println("链表1");head1.printLink();System.out.println(" ");System.out.println("链表2");head2.printLink();System.out.println(" ");LinkList x = new LinkList();x.hebing(head1.head, head2.head);System.out.println("合并之后输出合并好的有序链表");x.printLink();}
}

结果

Java链表-合并两个有序链表相关推荐

  1. 《LeetCode力扣练习》第21题 合并两个有序链表 Java

    <LeetCode力扣练习>第21题 合并两个有序链表 Java 一.资源 题目: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 ...

  2. 【Java】leetCode 21 合并两个有序链表

    题目 : 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 解题思路 : 1.依据以上两个升序链表进行拼接: 2.先定义一个傀儡节点newHead,用来 ...

  3. java合并两个有序链表_JS实现的合并两个有序链表算法示例

    本文实例讲述了JS实现的合并两个有序链表算法.分享给大家供大家参考,具体如下: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1-> ...

  4. Java实现 LeetCode 21 合并两个有序链表

    21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1 ...

  5. 【LeetCode】【HOT】21. 合并两个有序链表(递归)

    [LeetCode][HOT 100]21. 合并两个有序链表 文章目录 [LeetCode][HOT 100]21. 合并两个有序链表 package hot;import java.util.Ar ...

  6. 两个有序链表序列的交集_剑指offer第21天:合并两个有序链表

    我准备了 1000 本电子书和计算机各领域高清思维导图 100 张,关注后回复[资源],即可获取!更可回复[内推]加入 BAT 内推群! 01.题目分析 第21题:合并两个有序链表 将两个有序链表合并 ...

  7. 021合并两个有序链表

    合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. C语言: /*** Definition for singly-linked lis ...

  8. 【每日一算法】 合并两个有序链表

    微信改版,加星标不迷路! 每日一算法-合并两个有序链表 作者:阿广 阅读目录 1 题目 2 解析 1 题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. ...

  9. 合并两个有序链表分析

    合并两个有序链表: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: l1 l2 输入:1->2->4, 1->3->4 ...

  10. 算法:合并两个有序链表

    题目 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1- ...

最新文章

  1. OCCI读写Oracle Spatial的SDO_Geometry
  2. 配置JDK时发生'javac'不是内部或外部命令的现象与解决过程
  3. er图转关系模式规则_在石250谈及户外和解。神豪“木湙子”调侃“沈曼流水合同”?“青蛙”630万超皇续费!“婷er骚俊”舰队100图超高返利!...
  4. 在django中使用celery
  5. ROS笔记(25) 自主探索SLAM
  6. 如何给页面加上loding_excel打印区域页面设置
  7. VS2012解决方案的设置
  8. java导出excel 客户端_java如何将导出的excel下载到客户端
  9. python对于一元线性回归模型_Python|机器学习-一元线性回归
  10. oracle集群启动状态,oracle 11g集群软件无法启动解决步骤
  11. 学习Java,可以从事哪些岗位?
  12. swagger主页访问,返回报错500
  13. c语言省略号电脑键盘怎么打,省略号的快捷键怎么打【图解】
  14. 利用OpenCV处理图片-马赛克效果
  15. 软件耦合的分类及解决方法
  16. 车规电阻AEC-Q200测试项目及元器件检测设备
  17. ping命令的多种玩法,以前竟然只用它来测试网速!
  18. win2003服务器某一个网站被劫持,windows server 2012 iis被劫持的处理过程
  19. Java多线程 -- 深入理解JMM(Java内存模型) --(五)锁
  20. zabbix5.0监控esxi和vcenter

热门文章

  1. 世界人工智能大会-杨强演讲内容ppt
  2. 计算机财务管理模型组成要素,计算机财务管理复习
  3. matlab信号探测,雷达信号检测matlab程序
  4. 计算机推免经验分享——中科院信工所
  5. Simulink 快速入门(二)--创建简单模型
  6. html用css美化表格
  7. 面向接口编程思想(的好处)
  8. Emmagee 不支持android7.0以上,社区努力中~
  9. android下注入技术详解
  10. ubuntu 14.04 安装 diffmerge