Java数据结构之《链式线性表的插入与删除》问题

一、前言:

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

二、题目要求如下: 

(第 8 题) 链式线性表的插入与删除(难度系数65)

链式线性表的插入与删除
描述:删除链式线性表指定位置的元素。
输入:第一行为自然数n,表示链式线性表的长度,第二行为n个自然数表示链式线性表各元素值。第三行为指定删除的位置,第四行为插入的位置及元素值(如果位置不对,则不作操作,插入位置应在删除元素后重新计数)。
输出:输出删除与插入元素后的链式线性表的所有元素,元素之间用一个空格隔开。
样例输入:
5
1 2 3 4 5
3
6 7
样例输出:
1 2 4 5

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

 (1)原理引入:用到了LinkedList类的常用简单方法,因为List接口的实现类——LinkedList,它的内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式记录他前一个元素和后一个元素。我就不需要去创建一个链表来实现这个题,方便很多。然后因为是双链表,所以它的增删效率很高。

(2)我创建了Linked_List类。因为要用到LinkedList类去操作,所以要记得导包。

package com.fs.link;
/*
*  LinkedList 内部维护了一个双向循环链表
* 这里面的链表中的每一个元素都使用引用的方式记录它的前一个元素和后一个元素,其增删效率非常高
*/
import java.util.LinkedList;
import java.util.Scanner;
public class Linked_List {public static void main(String[] args) {Scanner sc = new Scanner(System.in);LinkedList<Integer> list01=  new LinkedList<>();  //指定这个集合里面的存储的元素:是Integer类型的对象int n= sc.nextInt();for(int i=0;i<n;i++){list01.add(sc.nextInt());  //因为 LinkedList实现了List接口,List接口继承了父接口Collection,里面就有add(Object o)(其中o泛指对象)方法向按顺序集合中添加元素}int index01=sc.nextInt()-1;  //输入的是指定删除的位置,所以实际删的位置的索引要减1//保证要删除的位置在集合中有元素,否则不做操作if(index01>=0){if(index01<list01.size()){  //这里原理也是一样,size()方法返回的集合中元素个数比索引要大1,所以不能等于,否则就是没有这个元素在集合里面list01.remove(index01);//因为 LinkedList实现了List接口,List接口继承了父接口Collection,里面就有remove(Object o)(其中o泛指对象)方法删除集合中指定元素}}int index02=sc.nextInt()-1;int value=sc.nextInt();//注意如果删除成功了一个元素,那么它的调用size()方法时返回的元素个数会少一个,但其实那个索引的位置其实是可以用的,所以添加的时候要注意下标可以等于返回的元素个数if (index02 >= 0) {if (index02 <= list01.size()) {list01.add(index02,value);  //满足条件就插入元素  add(int index,Object element)这个方法是LinkedList类自带的新增方法,在当前集合的索引位置插入元素element}}for(Integer value01 :list01){  //迭代器输出集合中的元素System.out.print(value01+" ");}}
}

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

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

<2> 然后当我们删除条件不满足,插入条件满足时:

<3> 然后当我们删除条件不满足,插入条件满足时(其他情况):

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

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

相关文章

C++设计模式——建造者模式(Builder)

一、什么是建造者模式&#xff1f; 建造者模式是一种创建型的软件设计模式&#xff0c;用于构造相对复杂的对象。 建造者模式可以将复杂对象的构建与它的表示分离&#xff0c;使得相同的构建过程可以得到不同的表示。如果说工厂模式和抽象工厂模式更注重产品整体&#xff0c;…

程序员的吐槽

在职场中&#xff0c;每个人都可能遇到让自己不满的领导或同事。这位工作了7年的程序员&#xff0c;今天就要吐槽一下他职场中的种种不快。 一、领导的“关爱” 1. 瞎指挥 这位程序员所在的公司规模不大&#xff0c;领导对技术一窍不通&#xff0c;却喜欢对技术团队指手画脚。…

【开源】基于Vue+SpringBoot的智能教学资源库系统

项目编号&#xff1a; S 050 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S050&#xff0c;文末获取源码。} 项目编号&#xff1a;S050&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课…

Android中添加C或C++代码

1、创建cpp目录&#xff0c;用于存放C和C代码。 2、创建CMake构建脚本CMakeLists.txt文件&#xff0c;将其放在cpp目录中。 # Sets the minimum version of CMake required to build the native library. cmake_minimum_required(VERSION 3.22.1)# Declares and names the pro…

AI模型训练——入门篇(二)

导语&#xff1a;本文主要介绍了基于BERT的文本分类方法&#xff0c;通过使用huggingface的transformers库实现自定义模型和任务。具体步骤包括&#xff1a;使用load_dataset函数加载数据集&#xff0c;并应用自定义的分词器&#xff1b;使用map函数将自定义分词器应用于数据集…

vue运用之el-cascader组件

前言 el-cascader 是 Element UI 的级联选择器组件。以下是一些常见的 el-cascader 问题以及对应的案例代码。 1. 如何使用 el-cascader 创建一个级联选择器 以下是一个简单的 el-cascader 示例: <template> <el-cascader v-model="selected" :option…

Linux:进程状态

目录 1.Linux内核关于进程状态的源代码 2. 运行状态 3. 阻塞状态 4. 挂起 5.Linux中的进程状态 5.1 睡眠状态 5.2 暂停状态 5.3 僵尸进程与孤儿进程 我们在学习进程状态时&#xff0c;老师只是简单的让我们记住下面这张图 1.教材中进程操作系统的进程状态 那么这些…

分享常见msvcp140.dll丢失的解决方法,msvcp140.dll修复的问题

在使用电脑的过程中可能会出现关于msvcp140.dll丢失的问题&#xff0c;通常出现这样的问题都会导致电脑中的程序出现不能正常运行的情况。并且如果不及时将msvcp140.dll修复的话可能还会导致电脑出现其他的问题。这篇文章就将给大家介绍关于msvcp140.dll丢失的解决方法。 一.常…

基于安卓的2048益智游戏的设计与实现

基于安卓的2048益智类游戏的设计与实现 摘要&#xff1a;现如今随着社会日新月异&#xff0c;人们越来越离不开智能手机所提供的灵活性与便携性。安卓系统是在这股手机发展迅猛的潮流中其市场占有率过半的手机平台&#xff0c;基于安卓系统的游戏开发有着不可估量的前景。 本论…

抖音、快手、新东方来袭,旅游行业战火再起?

低调了许久的旅游行业&#xff0c;终于迎来了大复苏&#xff0c;旅客的出游热情也再度被点燃&#xff0c;出游人数呈现出不断攀升态势。以“十一”黄金周为例&#xff0c;据文化和旅游部数据中心统计&#xff0c;本次黄金周&#xff0c;国内旅游出游人数8.26亿人次&#xff0c;…

jupyter notebook 添加conda环境变量为内核(kenel)

第一步&#xff1a;安装ipykernel 在激活环境后&#xff0c;需要安装ipykernel包&#xff0c;以便将Conda环境添加到Jupyter Notebook中。使用以下命令安装&#xff1a; pip install ipykernel第二步&#xff1a;将Conda环境添加到Jupyter 需要将Conda环境添加到Jupyter Not…

Java for/forEach 不支持重新賦值

loop中不支持變量重新賦值 Local variable printTotal defined in an enclosing scope must be final or effectively final 需要優化&#xff0c;這樣寫太羅嗦。 JasperPrint printTotal null;for(JasperPrint print:printList) {if(printTotalnull) {/*********************…

echarts 对数坐标轴

echarts 对数坐标轴 描述 Echarts 柱状图数据大小差距过大&#xff0c;例如一个值是100000&#xff0c;一个值是5&#xff0c;值小的柱子就不会显示出来。 解决&#xff0c;使用对数坐标轴 option {tooltip: {trigger: axis,},xAxis: {type: category,data: [Mon, Tue, We…

【Linux基础开发工具】yum生态vim的配置与使用

目录 前言 1. Linux 软件包管理器 yum 1.1 什么是yum 1.2 快速上手yum 1.3 yum生态 2. Linux编辑器vim 2.1 vim的模式 2.2 vim使用技巧 3. vim编辑器辅助功能配置 3.1 配置 3.2 用户sudo权限配置 总结 前言 Linux基础指令与权限之后&#xff0c;Linux系统开发工具的使用…

【SparkSQL】DataFrame入门(重点:df代码操作、数据清洗API、通过JDBC读写数据库)

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍DataFrame的组成、DataFrame的代码构建、DataFrame的入门操作、词频统计案例、电影数据分析、SparkSQL Shuffle 分区数目、SparkSQL 数据清洗API、DataFrame数据写出、DataFrame 通过JDBC读写数据库&#xff08;MyS…

DHCP、ARP、FTP、DNS、VRRP、STP、报文交互流程

目录 一、DHCP 1、DHCP终结 1、DHCP discover 2、DHCP offer 3、DHCP request 4、DHCP ack 5、DHCP request 6、DHCP 续租 2、DHCP终结 二、ARP 1、ARP类型 动态ARP 静态ARP ARP代理 ARP代理的分类&#xff1a;路由式代理、VLAN内的ARP代理、VLAN间的ARP代理。 6…

行情分析——加密货币市场大盘走势(11.30)

大饼已经形成了底背离&#xff0c;即MACD往下走&#xff0c;而价格还在往上走&#xff0c;这种往往后续会大跌。我们继续把空单拿好&#xff0c;已经持仓的无需加仓。多次上涨都一直不能突破&#xff0c;也说明多空和空军力量都很强&#xff0c;等待后续出方向&#xff0c;而笔…

HarmonyOS入门开发(三) 持久化存储Preferences

接入鸿蒙几天以来&#xff0c;发现各种和Android不一样的地方&#xff0c;今天来看一下Preferences存储 在Android中比如有ShardPreferences、Mmkv这些持久化存储方式&#xff0c;开发起来很方便&#xff0c;读取速度也很快&#xff0c;在鸿蒙里面也提供了对应的持久化存储方案…

WordPress两种方法实现上传媒体图片文件自动重命名

我们发布文章时&#xff0c;会上传一些图片、音频之类的文件。但是WordPress没有自动 给新上传文件重命名的功能&#xff0c;逐个文件去重命名那就太麻烦了&#xff0c;那么我们改如何自动给上传的媒体文件图片重命名呢&#xff1f; 我在网站搜索了些上WordPress上传媒体文件自…