代码如下:

package sjjgniub;import java.util.LinkedList;
import java.util.Scanner;@SuppressWarnings("all")
public class LinkList {private class Node{int data;Node next;public Node(){}public Node(int data){this.data = data;next = null;}}Node head = null;public LinkList(){head = new Node();if (head==null){System.out.println("Error");return;}head.next = null;}public void createList(int[] arr){Node p = head;for (int i = 0;i<arr.length;i++) {Node s = new Node(arr[i]);p.next = s;p = s;}}public void createList(){Scanner sc = new Scanner(System.in);int n = sc.nextInt();Node p = head;for (int i = 0;i<n;i++){int temp = sc.nextInt();Node s = new Node(temp);p.next = s;p = s;}}public void printList(){Node p = head.next;while(p!=null){System.out.print(p.data+" ");p = p.next;}System.out.println();}//判断是否为递增有序链表public boolean isSurge(LinkList L){if (L==null){return false;}else if (L.head.next==null){return true;}Node p = L.head.next;while(p.next!=null){if (p.next.data < p.data){return false;}p = p.next;}return true;}//将两个递增的有序链表合并为一个递增的有序链表public void mergeSurgeList(LinkList La){if (La==null){System.out.println("Error");return ;}if(!isSurge(La)){System.out.println("No surge");return ;}if (!isSurge(this)){System.out.println("No surge");return ;}Node pc = head;Node p1 = head.next;Node p2 = La.head.next;while(p1!=null && p2!=null){if (p1.data > p2.data){pc.next = p2;p2 = p2.next;pc = pc.next;}else if (p1.data < p2.data){pc.next = p1;p1 = p1.next;pc = pc.next;}else{pc.next = p1;p1 = p1.next;p2 = p2.next;pc = pc.next;}}if (p1==null && p2==null){pc.next = null;}else if (p1==null){pc.next = p2;}else if (p2==null){pc.next = p1;}La = null;}//将两个非递减的有序链表合并为一个非递增的有序链表public void mergeNotSurgeList(LinkList La){if (La==null){System.out.println("Error");return ;}if(!isSurge(La)){System.out.println("No surge");return ;}if (!isSurge(this)){System.out.println("No surge");return ;}Node pc = head;Node p1 = head.next;Node p2 = La.head.next;pc.next = null;while(p1!=null&& p2!=null){if (p1.data >= p2.data){Node tmp = p2.next;p2.next = pc.next;pc.next = p2;p2 = tmp;}else{Node tmp = p1.next;p1.next = pc.next;pc.next = p1;p1 = tmp;}}while(p2!=null){Node tmp = p2.next;p2.next = pc.next;pc.next = p2;p2 = tmp;}while(p1!=null){Node tmp = p1.next;p1.next = pc.next;pc.next = p1;p1 = tmp;}La = null;}}

测试类:

package sjjgniub;public class TestList {public static void main(String[] args) {LinkList linkList = new LinkList();int[] arr1 = {1,56,234,423,1000};linkList.createList(arr1);linkList.printList();LinkList linkList2 = new LinkList();int[] arr2 = {213,423,1000};linkList2.createList(arr2);linkList2.printList();System.out.println();//  linkList.mergeSurgeList(linkList2);linkList.mergeNotSurgeList(linkList2);linkList.printList();}
}

Java实现两个递增有序链表合并成一个递增有序链表和两个非递减有序链表合成一个非递增有序链表相关推荐

  1. Coding:两个从大到小的有序链表合并成一个从小到大有序链表

    要求 请实现一个函数,把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表. struct list {int value;list* next; }; list * merge ...

  2. 将两个有序链表合并成一个链表

    代码实现功能如下:将两个有序链表合并成一个有序链表. 具体思路如下:首先自己调用链表的创建函数,手动创建两个有序链表,链表的创建以输入0作为截止标志.创建好两个有序链表之后,将两个链表的头结点进行比较 ...

  3. 两个有序链表合并成一个有序的单链表

    将这两个有序链表合并成一个有序的单链表 要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间 表中允许有重复数据 算法描述 (1)定义一个合并后的指针pc指向La表的头结点.由于要求不占 ...

  4. 将k个有序链表合并成一个有序链表

    将k个有序链表合并成一个有序链表 这里以从小到大排序为例, 时间复杂度为O(nlgk). 特点:利用最小堆来完成k路归并 思路:取每个列表中的第一个元素,并将其放在最小堆中.与每个元素一起,必须跟踪从 ...

  5. 将两个整形数组排序后合并成一个数组

    将两个整形数组排序后合并成一个数组, 数组排序采用快速排序法,快速法定义了三个参数,(数组首地址*a,要排序数组起始元素下标i,要排序数组结束元素下标j). 它首先选一个数组元素(一般为a[(i+j) ...

  6. 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。(自己编程)

    建立一个链表,每个结点包括:学号.姓名.性别.年龄.输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去.最近接触到了链表的编程学习,遇到这样的比较基础的编程,程序表现大致分为几个步骤 ...

  7. 将两个递增的有序链表合并成一个递增的有序链表(CPP版)

    要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间,表中不允许由重复的数据 #include<iostream> using namespace std; //自定义链表的 ...

  8. c++实现两有序链表合并成一个新的有序链表

    包括定义的链表,插入数据,及输出打印 #include <iostream> #include <vector> #include <numeric> #inclu ...

  9. 将两个有序数组合并成一个有序数组

    将两个有序数组按从小到大顺序合并成一个数组. #include<iostream> using namespace std; int main() {int a[5]={1,5,6,8,9 ...

最新文章

  1. 核显也能玩游戏,OS X Yosemite优化指南
  2. php yof框架特点_腾讯正式开源高性能超轻量级 PHP 框架 Biny
  3. hdu--Number Sequence
  4. 电脑中没有oracle服务器,用AnySQL在没有oracle客户端的服务器上发送邮件
  5. Jackson相关的一些注解
  6. 响应设置cookie_注册登录 与 Cookie
  7. iOS 关于真机和模拟器framework合并
  8. 力扣283,移动零(JavaScript)
  9. 2013年C++A:神奇的算式
  10. Java实现分类文件拷贝2
  11. 无可用源 没有为任何调用堆栈加载任何符号_面试官问我JVM类加载,我笑了
  12. maven中dependency的属性(依赖)配置
  13. JS逆向-易班登录password参数(RSA加密)
  14. 5G基站君的进化之路 — CU和DU分离
  15. 通过笔记本设置wifi共享
  16. linux是基于什么的开源操作系统,什么是开源操作系统
  17. 科普:什么是CPU?CPU和芯片关系?CPU怎么做的?CPU有什么用?不同CPU有什么区别?我们怎么选CPU?
  18. [Vuforia] 详解·高通Vuforia识别追踪3D物体/模型,Unity开发
  19. linux下gcc版本切换
  20. ‘std::thread‘ has not been declared

热门文章

  1. 北京大学Tensorflow2.0笔记
  2. Android之安卓8.0版本以上手机开启热点提示Caller already has an active LocalOnlyHotspot request
  3. C和指针之字符串编程练习8实现char *my_strnchr(char const *str, int ch, int which)
  4. C++编译出现binding ‘const string {aka const std::__cxx11::basic_string<char>}’ to reference of type ‘std
  5. linux c的连接库和怎么同时编译多个源程序
  6. Android之在ubuntu过滤日志以及ps总结
  7. 直角三角形知道两边求角度_每日一讲:解直角三角形(3.21)
  8. 电子商务应用课程知识整理 第二章-电子商务相关知识与技术
  9. el-popover超过固定高度后出现滚动条_「测绘精选」RTK测量不出现固定解的原因...
  10. 预售┃连锁反应装置积木好玩到尖叫!