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

news/2024/2/29 2:26:10

一、前言:

  这是怀化学院的: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> 其它测试输入:


https://www.xjx100.cn/news/3118818.html

相关文章

使用Feign简化Spring Boot微服务间的调用

摘要&#xff1a; 在微服务架构中&#xff0c;服务间的通信是至关重要的。Spring Cloud提供了多种工具&#xff0c;其中Feign是一款声明式的Web服务客户端&#xff0c;能够显著简化服务调用的过程。本文将详细介绍在Spring Boot应用中如何使用Feign进行微服务之间的调用。 正文…

VR虚拟教育展厅,为教学领域开启创新之路

线上虚拟展厅是一项全新的展示技术&#xff0c;可以为参展者带来不一样的观展体验。传统的实体展览存在着空间限制、时间限制以及高昂的成本&#xff0c;因此对于教育领域来说&#xff0c;线上虚拟教育展厅的出现&#xff0c;可以对传统教育方式带来改革&#xff0c;凭借强大的…

【done】【重点】【回溯】【大数】剑指 Offer17:打印从1到最大的n位数

力扣 力扣中描述简单了&#xff0c;本质是考察大数算法。 1.大数 全排列 class Solution {public int[] countNumbers(int cnt) {char[] numArray {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};StringBuffer tmp new StringBuffer();List<String> res new ArrayList<>();…

Windows 系统配置 GraalVM 的 native-image 环境

由于 GraalVM 和相关组件会更新变化&#xff0c;所以文章内容的有效性会受影响。 1. 下载 GraalVM 打开官网 https://www.graalvm.org/ 点击 Download 下载。 在当前时间&#xff08;2023-11-29&#xff09;我下载的版本为: graalvm-jdk-21_windows-x64_bin.zip 解压 GraalVM…

PHP调用API接口的方法及实现(一键采集淘宝商品详情数据)

随着互联网、云计算和大数据时代的到来&#xff0c;越来越多的应用程序需要调用第三方的API接口来获取数据&#xff0c;实现数据互通和协同工作。PHP作为一种常用的服务器端语言&#xff0c;也可以通过调用API接口来实现不同系统的数据交互和整合。本文将介绍PHP调用API接口的方…

【开源视频联动物联网平台】开箱即用的物联网项目介绍

写一个开箱即用的物联网项目捐献给Dromara组织 一、平台简介 MzMedia开源视频联动物联网平台&#xff0c;简单易用&#xff0c;更适合中小企业和个人学习使用。适用于智能家居、农业监测、水利监测、工业控制&#xff0c;车联网&#xff0c;监控直播&#xff0c;慢直播等场景。…

工业物联网数据传输方式探究

文章目录 引言Modbus RTU&#xff1a;传统数据采集的基础Modbus TCP&#xff1a;现代工业物联网的关键演进与影响 结语 引言 工业物联网的发展为工业数据采集带来了巨大的变革。从最初的 Modbus RTU 到现在广泛应用的 Modbus TCP&#xff0c;数据采集方式的演进使得工业领域的…

docker搭建node环境开发服务器

docker搭建node环境开发服务器 本文章是我自己搭建node环境开发服务器的过程记录&#xff0c;不一定完全适用所有人。根据个人情况&#xff0c;按需取用。 命名项目路径 为了方便cd到项目路径&#xff0c;将项目路径重命名&#xff0c;方便输入。 vim /etc/profile # 修改p…