Java 单链表-有序链表的插入、两个升序表合并成降序表

Java 单链表-有序链表的插入、两个升序表合并成降序表

设计存储int型数据的带头结点的单链表List。要求:

实现输入一组数,以-1结束,

实现void merge(L)操作:将两个升序表合并成降序表

定义一个方法,实现向升序表中插入元素x,插入后依旧是升序表

打印出单链表的所有元素

import java.util.Scanner;
class List{
int data;
List next;
List(int x){ data = x;}
void append(){
List tail,p;
System.out.println("请输入一组数,以-1结尾:");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
tail = this;
while(x != -1) {
p = new List(x);
tail.next = p;
tail = p;
x = sc.nextInt();
}
}
void print() {
for(List p=this.next; p!=null; p=p.next)
System.out.print(p.data+" ");
System.out.print("\n");
}
void merge(List L) { //两个升序表合并为降序表,用头插法
List newL = new List(0);
List f;
List h1 = this.next;
List h2 = L.next;
while(h1!=null && h2!=null) {
if(h1.data < h2.data) {
f = h1;
h1 = h1.next;
}
else {
f = h2;
h2 = h2.next;
}
f.next = newL.next;
newL.next = f;
}
while(h1!=null) {
f = h1;
h1=h1.next;
f.next = newL.next;
newL.next = f;
}
while(h2!=null) {
f = h2;
h2=h2.next;
f.next = newL.next;
newL.next = f;
}
this.next = newL.next;
}
void insert() {
System.out.println("请输入待插入的数:");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
List pre,f,q;
pre = this; f = this.next;
q = new List(x);
while(f!=null && x>f.data) {
pre = f;
f = f.next;
}
q.next = pre.next; //因 pre.data< x< f,将f插入pre之后、f之前
pre.next = q;
}
}
class App{
public static void main(String [] args) {
List h = new List(0);
h.append();
h.print();
List s = new List(0);
s.append();
s.print();
h.insert();
System.out.println("插入结果为:");
h.print();
h.merge(s);
System.out.println("合并结果为:");
h.print();
}
}

java 列表流合并 java合并两个有序列表_java 列表流合并

Java 单链表-有序链表的插入、两个升序表合并成降序表相关教程

在idea配置javaweb环境时遇到的坑.......

在idea配置javaweb环境时遇到的坑....... 前言 上一篇,讲了如何在idea从eclipse导入javaweb,配置环境,这篇来讲一下我在这个过程中遇到的坑…坑哩个坑坑 一、连接数据库概述 在idea里有个database 通常在这里,一开始我还鼓捣了一下这个,但是最终发现,如果

Java 集合框架------collection 细节

Java 集合框架------collection 细节 什么是集合? 概念: 对象的容器,定义了多个对象进行操作的常用方法。可实现数组的功能。 和数组的区别: 1、 数组的长度固定,集合长度不固定 2、数组可以存储基本类型和引用类型,集合只能存储引用类型 集合 位置: ja

十年架构师心血:论Java程序员如何修炼成道,为你的程序人生护航

十年架构师心血:论Java程序员如何修炼成道,为你的程序人生护航 目录 前言 分享人生中必须经历的这13个阶段. 1. 自己的户口档案、养老保险、医疗保险、住房公积金一定要保管好。 2. 不要轻易换笔记本电脑,不要跟潮流,不要买过多的电子产品,不要过于频繁的

JAVA——序列求和

JAVA——序列求和 这个代码看似很简单,但需要注意的是n的数据规模:1=n=1000000000 如果使用int存储结果,会导致结果错误! 我们需要用long型去存储结果! Java的数据类型分为两种: 1、基本类型:byte(8),short(16),int(32),long(64),float(32),double(64),

让你详细理解寻找两个有序数组第k个数的递归算法

让你详细理解寻找两个有序数组第k个数的递归算法 寻找两个有序数组中的第k个数 假设有两个数组A与B A为[1,2,5,6.7] B为[1,2,3,4,5] 现在需要寻找A、B合并之后的数组中的第4个数 方法一 比较偷懒的方法 直接使用C++中的merge函数将A与B合并为一个有序数组再按

java对象

java对象 面向过程 面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二部做什么… 面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类

Java并发(四)synchronized关键字(2)优化

Java并发(四)synchronized关键字(2)优化 一.轻量级锁 如果一个对象虽然有多线程要加锁,但加锁的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化。轻量级锁对使用者是透明的,即语法仍然是 synchronized。 假设有两个方法同步块,利用同一个

jmeter4_使用java生的随机字符模拟数据生成

jmeter4_使用java生的随机字符模拟数据生成 1、背景 数据库压力测试,模拟insert操作时,需要生成随机数字或字符串模拟生产。 2、用java代码生成随机数 基本要点: 实际是用的BeanShell Sampler组件。 写java代码生成你想要的任何值,类似java类的内部(不要