Java数据结构之《合并线性表》问题

一、前言:

  这是怀化学院的:Java数据结构中的一道难度中等偏下的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题只要我写完,并成功实现,会陆续更新,记得三连哈哈! 所有答案供参考,不是标准答案,是博主自己研究的写法。

二、题目要求如下:(注意输入的也是两个非递减线性表,也就是递增线性表)

(第 14 题) 合并线性表(难度系数65)

合并线性表
描述:已知两非递减的顺序线性表,要求
合并成一个新的非递减顺序线性表
输入:输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度,第二行为n个自然数构成的非递减顺序线性表,第三行为自然数m,表示第二个非递减顺序线性表的长度,第四行为m个自然数构成的非递减顺序线性表。
输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。
样例输入:
2
1 3
3
2 3 6

样例输出:
1 2 3 3 6

三、代码实现:(基本原理在代码注释中) 

(1)我自己创建了一个线性表类:因为我用的是顺序表实现线性表,则用到了数组。它的顺序存储结构可以用一组地址连续的存储单元依次存储线性表的数据元素,还有数组的元素类型使用泛型的话,可以实现不同数据类型的线性表。

package com.fs.list;
import java.util.Scanner;
public class Linear_List {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //此题用的其实是顺序表实现线性表,那就会用到数组
        int n=sc.nextInt();  //第一组非递减线性表的长度
        int data1[]=new int[n];
        for(int i=0;i<n;i++){
            data1[i]=sc.nextInt();
        }
        //第二组非递减线性表的长度
        int m=sc.nextInt();
        int data2[]=new int[m];
        for(int j=0;j<m;j++){
            data2[j]=sc.nextInt();
        }
        //创建新的数组,来存放合并线性表后的数据
        int sum=n+m;
        int []data=new int[sum];
        int i=0; //第一个数组的下标
        int j=0; //第二个数组的下标
        int k=0; //合并后数组的下标
        for(;k<sum;k++) {
            if(i < n && j < m){  //为了满足两个数组里的数的下标都在各自数组存在
                //注意每次赋完值后 i或j 都要自增1,表示这个小标已经赋值完了,到下一个了
                if (data1[i] < data2[j]) {
                    data[k] = data1[i++];   //把两个数组的第一个数中最小的赋值给:合并后的数组的第一个数
                } else if (data1[i] > data2[j]) {
                    data[k] = data2[j++];   //把两个数组的第一个数中最小的赋值给:合并后的数组的第一个数
                } else if ((data1[i] == data2[j])) {
                    data[k++] = data1[i++];  //这里我设定如果当两个数组的值相等时,就优先将第一个顺序线性表的数据赋值给合并后的数组,再将第二个顺序线性表的数据赋值
                    data[k] = data2[j++];
                }
            }
            else if(j==m&&i<n){   //此地方的作用就是:当某一个数组的值赋值完毕后,就将剩余没赋值完的数组的值继续赋值给合并后的数组
                data[k]=data1[i++];
            }else if(i==n&&j<m){
                data[k]=data2[j++];
            }
        }
        //顺序输出存储合并后的线性表的数据的数组里的值
        for(int x=0;x<sum;x++){
            System.out.print(data[x]+" ");
        }
    }
}

四、不同情况下的代码运行结果:

<1>首先测试输入题目中输入样例:

<2> 测试输入题目输入样例反过来:

<3> 其它测试输入:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/203409.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【腾讯云 HAI域探秘】借助高性能应用HAI——我也能使用【stable diffusion】制作高级视频封面了

目录 高性能应用服务HAI_GPU云服务器的申请与服务创建 官网地址&#xff1a;高性能应用服务HAI_GPU云服务器_腾讯云 通过高性能应用服务HAI——创建【stable diffusion】 WebUI效果&#xff1a; 服务器后台效果&#xff1a; stable-diffusion服务测试 启动接口服务 配置…

【Redis】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)

目录 Redis的慢查询 慢查询配置 慢查询操作命令 慢查询建议 Pipeline 事务 Redis的事务原理 Redis的watch命令 Pipeline和事务的区别 Lua Lua入门 安装Lua Lua基本语法 注释 标示符 关键词 全局变量 Lua中的数据类型 Lua 中的函数 Lua 变量 Lua中的控制语句…

为计算机设计一个完美的思维模型,帮找bug和漏洞,一起来做渗透测试吧 最赚钱的10种思维模型

芒格 如果我不能淘汰自己一年前的思维模型&#xff0c;这一年我就白过了。&#xff08;终身学习&#xff0c;不断迭代自己。&#xff09; 思维模型是什么&#xff0c;有哪些&#xff1f; 思维模型是用来简化和理解复杂现实世界的概念框架。它们是一种思考和解决问题的工具&a…

基于springboot实现的学生成绩管理系统

一、系统架构 前端&#xff1a;html | jquery | layui 后端&#xff1a;springboot | mybatis 环境&#xff1a;jdk1.8 | maven | mysql 二、代码及数据库 三、功能介绍 01. 登录页 02. 教师端-学生管理 03. 教师端-成绩管理 04. 教师端-学生总成绩管理 05. 学生端-我的成绩 0…

轻型载重汽车转向前桥总成系统毕业设计机械设计

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;前桥 获取完整说明报告工程源文件 绪论 1.1 轻型载重汽车转向桥的设计意义 汽车是现代交通工具中用得最多&#xff0c;最普遍&#xff0c;也是最方便的交通运输工具。汽车转向系是汽车上的一个重要系统,它是汽车转向运动…

从实践角度深入探究数据驱动和关键字驱动测试方法!

数据驱动 数据驱动&#xff0c;指在软件测试领域当中的数据驱动测试&#xff08;Data-Driven Testing&#xff0c;简称DDT&#xff09;是⼀种软件测试⽅法&#xff0c;在不同的数据下重复执⾏相同顺序的测试步骤&#xff0c;测试脚本从数据源读取测试数据&#xff0c;⽽不使⽤…

数学建模-基于集成学习的共享单车异常检测的研究

基于集成学习的共享单车异常检测的研究 整体求解过程概述(摘要) 近年来&#xff0c;共享单车的快速发展在方便了人们出行的同时&#xff0c;也对城市交通产生了一定的负面影响&#xff0c;其主要原因为单车资源配置的不合理。本文通过建立单车租赁数量的预测模型和异常检测模型…

PyQt基础_011_对话框类控件QMessage

基本功能 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class WinForm( QWidget): def __init__(self): super(WinForm,self).__init__() self.setWindowTitle("QMessageBox") self.resize(300, 100) self.myButt…

初识Java 18-5 泛型

目录 动态类型安全 异常 混型 C中的混型 替代方案 与接口混合 使用装饰器模式 与动态代理混合 本笔记参考自&#xff1a; 《On Java 中文版》 动态类型安全 在Java 5引入泛型前&#xff0c;老版本的Java程序中就已经存在了List等原生集合类型。这意味着&#xff0c;我们…

vue3中的provide与inject跨层级组件(祖孙)间通信

provide和inject提供依赖注入&#xff0c;功能类似 vue2.x 的provide/inject 实现跨层级组件(祖孙)间通信 子或孙子组件接收到的数据可以用于读取显示&#xff0c;也可以进行修改&#xff0c;同步修改父&#xff08;祖&#xff09;组件的数据。 注意&#xff1a;无论子组件…

第二十章总结。。。

20.1线程简介. 20.2创建线程 2.1继承Thread类 Thread 类是java.lang包中的一个类&#xff0c;从这个类中实例化的对象代表线程&#xff0c;程序员启动一个新线程需要建立Thread 实例。Thread类中常用的两个构造方法如下: public Thread():创建一个新的线程对象。 public Thread…

大数据HCIE成神之路之数学(4)——最优化实验

最优化实验 1.1 最小二乘法实现1.1.1 算法介绍1.1.2 代码实现1.2 梯度下降法实现1.2.1 算法介绍1.2.2 代码实现1.3 拉格朗日乘子法1.3.1 实验1.3.2 实验操作步骤1.1 最小二乘法实现 1.1.1 算法介绍 最小二乘法(Least Square Method),做为分类回归算法的基础,有着悠久的历…

【数据结构】单链表---C语言版

【数据结构】单链表---C语言版 一、顺序表的缺陷二、链表的概念和结构1.概念&#xff1a; 三、链表的分类四、链表的实现1.头文件&#xff1a;SList.h2.链表函数&#xff1a;SList.c3.测试函数&#xff1a;test.c 五、链表应用OJ题1.移除链表元素&#xff08;1&#xff09;题目…

zookeeper 客户端常用命令简单记录(实操课程系列--watcher功能测试)(发布订阅功能测试)

本系列是zookeeper相关的实操课程&#xff0c;课程测试环环相扣&#xff0c;请按照顺序阅读测试来学习zookeeper。阅读本文之前&#xff0c;请先阅读----zookeeper 单机伪集群搭建简单记录&#xff08;实操课程系列&#xff09; 1、命令行工具切换到zookeeper的bin目录下面&am…

Linux系统编程--文件操作函数

一.常见IO函数 fopen fclose fread fwrite fseek fflush fopen 运行过程 &#xff1a;打开文件 写入数据 数据写到缓冲区 关闭文件后 将数据刷新入磁盘 1.fopen 返回文件类型的结构体的指针 包括三部分 1).文件描述符&#xff08;整形值 索引到磁盘文件&#xff09;…

GraphCast:基于机器学习的全球中期天气预测模型

文章信息 文章题为”GraphCast: Learning skillful medium-range global weather forecasting”&#xff0c;该文章于2023年发表至Science&#xff0c;文章内容主要关于利用机器学习模型&#xff0c;实现高效、准确的全球中期天气预测。由于文章内容较多&#xff0c;本文仅对研…

跨境电商CRM系统:挖掘客户价值,实现精准营销

跨境电商企业日常工作中需要用到很多应用例如建独立站、邮件营销、财务管理&#xff0c;其中CRM系统更是客户管理的核心。无论是获客、管理客户资料、维护客户关系、数据分析都要在应用上完成。今天我们就来说一说跨境电商CRM系统有哪些功能&#xff1f; 1.AI人工智能助手 业…

前端项目中获取浏览器版本的方法

在我们的前端项目中&#xff0c;navigator.userAgent属性含有当前浏览器相关信息&#xff08;比如版本号&#xff09;。 所以当我们想要获取用户当前访问的浏览器的版本时直接去解析navigator.userAgent字段就中。 废话不多说&#xff0c;下面看封装的获取浏览器版本的函数&am…

express+mySql实现用户注册、登录和身份认证

expressmySql实现用户注册、登录和身份认证 注册 注册时需要对用户密码进行加密入库&#xff0c;提高账户的安全性。用户登录时再将密码以相同的方式进行加密&#xff0c;再与数据库中存储的密码进行比对&#xff0c;相同则表示登录成功。 安装加密依赖包bcryptjs cnpm insta…

C++学习之路(十三)C++ 用Qt5实现一个工具箱(增加一个Base64加解密功能)- 示例代码拆分讲解

上篇文章&#xff0c;我们用 Qt5 实现了在小工具箱中添加了《XML文本格式化功能》功能。为了继续丰富我们的工具箱&#xff0c;今天我们就再增加一个平时经常用到的功能吧&#xff0c;就是「 Base64加解密 」功能。下面我们就来看看如何来规划开发一个这样的小功能并且添加到我…