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

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();

}

}

615aa89140c7e0ae8677b608cf7659f6.png

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类的内部(不要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值