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> 其它测试输入:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

freertos任务调度机制深度分析(以RISC-V架构为例)

1、前言 本文是以RISC-V架构为例进行讲解&#xff0c;在汇编代码层面和ARM架构不一样&#xff0c;但是整体框架是一样的侧重任务调度底层机制讲解&#xff0c;讲解代码只保留了基本功能&#xff0c;可配置的功能基本都已经删除本文是以可抢占式调度机制进行讲解RISC-V架构只支持…

【ZEDSLAM】Ubuntu18.04系统ZED 2i双目相机SDK安装、联合标定、SLAM测试

0.设备、环境和说明 笔记本电脑i5-8300H、GTX 1060、32GRAM 因为后面要测试Vins-Fusion和ORB-SLAM3&#xff0c;所以推荐安装Ubuntu 18.04&#xff08;或者Ubuntu 20.04&#xff09; ROS 1&#xff08;不建议用比Ubuntu18更低的版本&#xff09; ROS一键安装命令&#xff1a;…

智能监控平台/视频共享融合系统EasyCVR接入RTSP协议视频流无法播放原因是什么?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…

网络入门---网络编程预备知识

目录标题 ifconfigip地址和mac地址的区别端口号pid和端口号UDP和TCP的初步了解网络字节序socket套接字 ifconfig 通过指令ifconfig便可以查看到两个网络接口&#xff1a; 我们当前使用的是一个linux服务器并是一个终端设备&#xff0c;所以他只需要一个接口用来入网即可&…

JVM

图来自JavaGuide 程序计数器 程序计数器是线程私有的&#xff0c;每个线程一份&#xff0c;是线程安全的&#xff1b;内部保存的字节码的行号&#xff0c;用于记录正在执行的字节码指令的地址。 java堆 java堆是线程共享的区域&#xff08;线程不安全&#xff09;&#xff…

ECRS生产工时分析软件:工业效率提升的隐形引擎

降本增效往往是企业开工规划的第一步。那到底降什么本&#xff0c;增什么效呢&#xff0c;对于很多企业来说&#xff0c;都是从采购成本入手&#xff0c;结果采购成本是降下来了&#xff0c;但是整体品质却下降了。实际上&#xff0c;要降本增效&#xff0c;优化现场管理才是企…

leetcode 611. 有效三角形的个数(优质解法)

代码&#xff1a; class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int lengthnums.length;int n0; //三元组的个数//c 代表三角形最长的那条边for (int clength-1;c>2;c--){int left0;int rightc-1;while (left<right){if(nums[left]nums[r…

【JavaEE初阶】 HTTP响应报文

文章目录 &#x1f332;序言&#x1f38d;200 OK&#x1f340;404 Not Found&#x1f384;403 Forbidden&#x1f334;405 Method Not Allowed&#x1f38b;500 Internal Server Error&#x1f333;504 Gateway Timeout&#x1f332;302 Move temporarily&#x1f38d;301 Move…

序列号管理

序列号管理&#xff0c;将从以下方面进行学习和阐述 WHY 为什么需要序列号&#xff0c;有什么作用 HOW sap如何进行管理序列号 WHEN 什么情况下适合进行序列号管理 1、 什么是序列号 首先简单介绍一个序列号是什么东西&#xff0c;我们使用的手机、电脑或者大家…

Spring Framework远程代码执行漏洞 CVE-2022-22965 漏洞复现

Spring Framework远程代码执行漏洞 CVE-2022-22965 漏洞复现和相关利用工具 名称: Spring Framework 远程命令执行漏洞 描述: Spring core是Spring系列产品中用来负责发现、创建并处理bean之间的关系的一个工具包&#xff0c;是一个包含Spring框架基本的核心工具包&#xff0…

【SparkSQL】基础入门(重点:SparkSQL和Hive的异同、SparkSQL数据抽象)

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍Spark SQL的定义、特点、发展历史、与hive的区别、数据抽象、SparkSession对象。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下吧】 上一…

远程工具无法连接VMware虚拟机 (Network error: Connection timed out)

windowr输入&#xff1a;services.msc ①检查window相关的Vmmare服务是否开启&#xff1a; 确保上面这个几个启动类型是自动&#xff0c;状态是正在运行。 ②排查虚拟网卡是否禁用&#xff1a; 设置->网络->更改适配器选项&#xff1a; ③检查虚拟网络编辑器以及虚拟机…

Java数据结构之《栈实现括号匹配的检验》问题

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论提出意见&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题只要我写完…

CPU虚拟化的过程

VMCS 是Virtual Machine Control Structure。是 Intel 实现 CPU 虚拟化&#xff0c;记录 vCPU 状态的一个关键数据结构。VMCS 数据结构主要包含以下信息。 Guest-state area&#xff0c;即 vCPU 的状态信息&#xff0c;包括 vCPU 的基本运行环境&#xff0c;例如寄存器等。Hos…

4G5G防爆执法记录仪、防爆智能安全帽赋能智慧燃气,可视化巡检巡线,安全生产管控

随着燃气使用的普及&#xff0c;燃气安全问题日益突出。传统应急安全问题处理方式暴露出以下问题&#xff1a; 应急预案不完善&#xff1a;目前一些燃气企业的应急预案存在实用性不高、流程不清晰等问题&#xff0c;导致在紧急情况下难以迅速启动和有效执行。 部门协同不流畅…

[Python入门系列之十二]安装Jupyter notebook与代码运行

引言 Jupyter Notebook将代码、图片和文本完美结合在一起&#xff0c;为编程学习带来了前所未有的便捷性。本文旨在为初学者提供一个关于Jupyter Notebook的入门指南。 什么是Jupyter Notebook Jupyter Notebook是一个开源的Web应用程序&#xff0c;允许你创建和共享包含代码…

wvp如果确认音频udp端口开放成功

用到工具 在服务器上开启端口监听 选中udp server&#xff0c;点击创建按钮 设置服务器监听端口 在客户端连接服务器端口 选中udp客户端&#xff0c;点击创建 输入服务器地址 远程端口和本地端口&#xff0c;本地端口只要没被占用都可以使用 &#xff0c;点击确认 发送数据 …

使用凌鲨管理本地git仓库

把本地git仓库添加到凌鲨后&#xff0c;可以更方便的获取git仓库的信息&#xff0c;比如查看commit记录&#xff0c;统计代码提交量&#xff0c;获取远程仓库的issue等功能。 功能 查看提交/分支/标记列表 查看提交差异 查看远程仓库和相关issue 每天代码量统计 添加本地仓库…

注解(概念、分类、自定义注解)

注解基本概念 注解(元数据)为我们在代码中添加信息提供一种形式化的方法&#xff0c;我们可以在某个时刻非常方便的使用这些数据。将的通俗一点&#xff0c;就是为这个方法增加的说明或功能。 作用&#xff1a; 编写文档&#xff1a;通过代码里标识的注解生成文档【生成doc文…

S7-1200PLC和KEPserver OPC通信

KEPserver属于OPCserver商用软件,在国内的市场占有率还是比较高的,这篇博客介绍S71200PLC和KEPserver通信配置,首先我们看下我们的PLC的IP地址。 1、S7-1200PLC IP地址 接下来我们在KEPserver新建通道 2、新建通道 3、选择通道网卡 4、添加PLC IP地址 5、指定扫描模式 6、…