将两个有序的单向链表整合成一个有序单向链表
来源:互联网 发布:windows 10桌面美化 编辑:程序博客网 时间:2024/05/19 12:11
题目:将两个有序的单向链表整合成一个新的有序单向链表。
以小到大有序基准的单向链表,算法原理:
1、取链表A,链表B 各自头节点进行比较,确定新链表的头节点。
2、若取的是链表A的节点,取出链表A该节点的下一节点与B链表当前节点比较,新链表的节点指向比较得出的小节点。
3、循环步骤2,直至链表A,B其中一个到达结尾,将新链表尾节点指向未到达结尾的链表当前节点,算法结束。
将有序单向链表转向输出:
1、将下一节点指向前一节点。
2、由于需从原链表尾节点开始执行,所以进行递归。
public class Test { public static void main(String[] args) { Node a = new Node(1); Node b = new Node(3); Node d = new Node(5); a.next = b; b.next = d; Node A = new Node(2); Node B = new Node(3); Node C = new Node(4); Node D = new Node(6); A.next = B; B.next = C; C.next = D; print(a); print(A); print(sortNodeBigFirstFromSmallFirst(a, A)); } public static void print(Node a){ Node tmp = a; StringBuffer sb = new StringBuffer(); while (tmp != null) { sb.append(tmp.val); sb.append(' '); tmp = tmp.next; } System.out.println(sb); } /** * 按小到大单向链表 * @param a * @param b * @return */ public static Node sortNodeSmallFirst(Node a, Node b) { Node ret = null; if(a == null) ret = b; else if(b == null) ret = a; else{ Node tmp; if(a.val < b.val){ tmp = a; a = a.next; }else{ tmp = b; b = b.next; } ret = tmp;//确定头节点 while(a != null && b != null){ if(a.val < b.val){ tmp.next= a; a = a.next; }else{ tmp.next = b; b = b.next; } tmp = tmp.next; } tmp.next = (a == null?b:a); } return ret; } /** * 将按小到大单向链表转成反向链表 * @param a * @param b * @return */ public static Node sortNodeBigFirstFromSmallFirst(Node a, Node b) { Node sortNodeSmall= sortNodeSmallFirst(a, b); print(sortNodeSmall); Node ret = reverse(sortNodeSmall); return ret; } public static Node reverse(Node src){ Node ret = null; if(src.next != null){ ret = reverse(src.next); src.next.next = src; src.next = null; }else ret = src; return ret; }}class Node { Node next; public int val; public Node(int i) { val = i; }}
输出结果:
0 0
- 将两个有序的单向链表整合成一个有序单向链表
- 将两个单向有序链表合并成一个单向有序链表
- 两个有序单向链表的合并
- 合并两个有序单向链表
- 有序单向链表的相关操作
- 将单向有序链表转化为BST
- Java实现有序单向链表
- Python 实现有序单向链表
- 将两个有序链表合成一个有序链表
- 将两个有序链表合并成一个新的有序链表
- 【数据结构】单向有序链表---最水的代码
- 单向循环链表的有序插入 对单向循环链表head插入元素 链表保持有序
- Java将两个有序链表合并为一个有序链表、将两个有序数组合并成一个有序数组
- 将两个有序递增的链表合成一个有序递增的链表
- 将两个递增的有序链表合并为一个递增的有序链表
- 将两个各自有序的链表,合成一个有序的链表
- 将两个有序链表合并成一个有序链表
- 将两个有序链表合并成一个有序链表
- Android的屏幕适配,图片适配
- Qt学习笔记之使用HTML在TextEdit中构造表格显示数据
- 立体匹配CNN篇(一) :[LW-CNN] look wider to match image patches by cnn
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- The environment variable JAVA_HOME does not point to a valid JVM installation
- 将两个有序的单向链表整合成一个有序单向链表
- 消息队列-RabbitMq(PHP)
- Problem-1042 N!
- Shell脚本编程(二)
- 初识android动画(4)之属性动画
- Theano教程:使用逻辑回归分类MNIST数字
- storm从kafka中读数据
- Qt - Button
- ThinkPad点击文件夹有声音解决方案