数组模拟单链表

实现一个单链表,链表初始为空,支持三种操作:

向链表头插入一个数;
删除第 k个插入的数后面的数;
在第 k个插入的数后插入一个数。
现在要对该链表进行 M次操作,进行完所有操作后,从头到尾输出整个链表。

注意:题目中第 k个插入的数并不是指当前链表的第 k个数。例如操作过程中一共插入了 n个数,则按照插入的时间顺序,这 n个数依次为:第 1
个插入的数,第 2个插入的数,…第 n个插入的数。

输入格式
第一行包含整数 M,表示操作次数。接下来 M 行,每行包含一个操作命令,操作命令可能为以下几种:
H x,表示向链表头插入一个数 x。
D k,表示删除第 k个插入的数后面的数(当 k为 0时,表示删除头结点)。
I k x,表示在第 k
个插入的数后面插入一个数 x(此操作中 k 均大于 0)。
输出格式
共一行,将整个链表从头到尾输出。

import java.util.*;
import java.io.*;

public class Main {
	static int INF = 0x3f3f3f3f;
	static int MOD = 998244353;
	static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
	static int n;
	static int N = 100010;
	static int head = -1;
	static int e[] = new int [N];
	static int ne[] = new int [N];
	static int idx = 1;
	static void add_to_head(int x) {
		e[idx] = x; ne[idx] = head; head = idx ++;
		}
	
	static void add_to_k(int k ,int x) {
		e[idx] = x; ne[idx] = ne[k]; ne[k] = idx; idx ++;
	}
	
	static void remove(int k) {
		ne[k] = ne[ne[k]];
	}
    public static void main(String[] args) throws IOException {
    	Scanner sc = new Scanner(System.in);
    	n = sc.nextInt();
    	while(n --> 0) {
    		char s = sc.next().charAt(0);
    		if(s == 'H') {
    			int x = sc.nextInt();
    			add_to_head(x);
    		}else if(s == 'D') {
    			int k = sc.nextInt();
    			if(k == 0) head = ne[head];
    			else remove(k);
    		}else {
    			int k = sc.nextInt();
    			int x = sc.nextInt();
    			add_to_k(k, x);
    		}
    	}
    	
    	for(int i = head; i != -1; i = ne[i] ) {
    		System.out.println(e[i]);
    	}
    	sc.close();
    	pw.close();
    }
}


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

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

相关文章

Spring 源码解析 - Bean创建过程 以及 解决循环依赖

一、Spring Bean创建过程以及循环依赖 上篇文章对 Spring Bean资源的加载注册过程进行了源码梳理和解析,我们可以得到结论,资源文件中的 bean 定义信息,被组装成了 BeanDefinition 存放进了 beanDefinitionMap 容器中,那 Bean 是…

RabbitMQ技术-初级

RabbitMQ技术-初级一、初识RabbitMQ1.基本结构2.消息模型3.工程创建4.入门案例4.1.publisher实现4.2.consumer实现4.3.总结二、SpringAMQP1.Basic Queue 简单队列模型1.1.消息发送1.2.消息接收1.3.测试2.WorkQueue2.1.消息发送2.2.消息接收2.3.测试2.4.能者多劳2.5.总结3.发布/…

【C++】类和对象(上)

现在我们来对C中类和对象进行极其详细的讲解:一、类的引入在C语言中我们没有类这个概念,所以在使用结构体时所定义的是一个类型,里面只能定义变量,在C中,结构体内不仅可以定义变量,也可以定义函数。&#x…

【C#】List数据去重

系列文章 【C#】单号生成器(定义编号规则、流水号、产生业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成(构建本周开始、结束日期) 本文链接:https…

go语言入门-一文带你掌握go语言函数

前言 本文go语言入门-掌握go语言函数收录于《go语言学习专栏》专栏,此专栏带你从零开始学习go语言。 文章目录前言一. go语言函数介绍1.1 函数的介绍1.2 函数的特点二. 函数的语法2.1 函数的表达式2.2 函数表达式案例2.2.1 案例一 :利用函数求最大值2.2…

Mybatis实战

本篇文章主通过实战项目的例子,为大家介绍两种Mybatis实现CRUD的操作 1.使用映射配置文件实现CRUD操作 2.使用注解实现CRUD操作(简单介绍) Mybatis的初步学习及配置可以查看我的另一篇文章:【知识】Mybatis学习笔记 本篇文章示例代码已分享至我的资源&am…

基于YOLOv5的舰船检测与识别系统(Python+清新界面+数据集)

摘要:基于YOLOv5的舰船检测与识别系统用于识别包括渔船、游轮等多种海上船只类型,检测船舰目标并进行识别计数,以提供海洋船只的自动化监测和管理。本文详细介绍船舰类型识别系统,在介绍算法原理的同时,给出Python的实…

黑马程序员——前端HTML5+CSS3(女神版)——day01——文本格式化标签、图片标签的title属性、音频标签、视频标签、超链接标签的target属性

黑马程序员——前端HTML5CSS3(女神版)——day01——文本格式化标签、图片标签的title属性、音频标签、视频标签、超链接标签的target属性 目录黑马程序员——前端HTML5CSS3(女神版)——day01——文本格式化标签、图片标签的title属…

HTTPS 加密协议

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录HTTPS"加密" 是什么HTTPS 的工作过程引入证书HTTPS http 安全层 (SSL) SSL 用来加密的协议,也叫 TLS …

Mybatis(一):环境搭建

Mybatis(一):环境搭建前言一、MyBatis简介1、MyBatis历史2、MyBatis特性3、MyBatis下载4、和其它持久化层技术对比二、搭建MyBatis1、开发环境2、创建maven工程2.1 打包方式:jar2.2 引入依赖3、创建MyBatis的核心配置文件4、创建m…

详解结构体内存对齐

目录 前言 一、内存大小的计算 1.规则 2.练习 二、为什么要有内存对齐 1.移植原因 2.性能原因 三、修改默认对齐数 总结 前言 本文针对结构体大小的计算进行深度剖析。结构体的大小要遵守内存对齐,在绝大数情况下,会浪费空间。但是有其的价值&…

学校教的Python,找工作没企业要,太崩溃了【大四真实求职经历】

如果只靠学校学的东西去找工作,能找到工作吗? 今天给大家看一个粉丝的真实求职案例,想做Python方面的工作,投了二十几个简历却没人要,心态崩了。为什么没人要?我来告诉你答案。 然后我还会结合我的这些年的…

量子计算(10)量子算法2:Deutsch-Jozsa算法

又到了一周一篇的量子计算啦!全体起立respect! 前言:本篇文章研究的算法,相当无聊。在日常生活中基本上用不到,但是这个算法却能显著的体现出量子计算算法比经典算法更加快速这一特点。这个算法就好比C语言里的hello w…

centos yum安装英伟达显卡驱动

背景 最近在研究一个AI项目,需要用到英伟达显卡训练模型,centos默认使用集成显卡,没有安装Nvidia显卡驱动 操作: 1. 安装必要依赖包 yum -y install kernel-devel epel-release dkms gcc2. 禁用默认显卡 vim /etc/default/gr…

分享5款让你工作事半功倍的软件

无论你是一位职业人士、学生还是创业者,以下这些工具都可能对你的工作和生活有所帮助。下面推荐五款实用的软件工具,它们不仅功能强大,而且易于使用。 1.3D建模和动画制作——Blender Blender是一款免费、开源的3D建模和动画制作软件&#…

C语言数据结构初阶(7)----队列

CSDN的uu们,大家好。这里是C语言数据结构的第七讲。 目标:前路坎坷,披荆斩棘,扶摇直上。 博客主页:姬如祎队列的基础知识队列(queue)是只允许在一端进行插入操作,而在另一端进行删除…

HBase高手之路4-Shell操作

文章目录HBase高手之路3—HBase的shell操作一、hbase的shell命令汇总二、需求三、表的操作1.进入shell命令行2.创建表3.查看表的定义4.列出所有的表5.删除表1)禁用表2)启用表3)删除表四、数据的操作1.添加数…

苹果发布无线充新专利,苹果Find My技术成为近几年苹果的重要创新

根据美国商标和专利局公示的清单,苹果公司近日获批了编号为 US 20230080598 A1 新专利。该专利主要为各种类型的无线充电器制造配件盒。 苹果表示近年来无线充电市场得到了快速发展,但目前市场尚未规范,可能使用不同的无线充电标准。这就导…

PCIE时钟解说

接上篇文章《clock oscillator,generator,buffer选型杂谈》,今天我们来说下PCIE时钟的要求: 首先先看下PCIE架构组件:下图中主要包括了CPU(ROOT COMPLEX),PCIE SWITCH,BUFFER以及一些PCIE ENDP…

(数据结构)八大排序算法

目录一、常见排序算法二、实现1. 直接插入排序2.🌟希尔排序3. 选择排序4.🌟堆排序5. 冒泡排序7. 🌟快速排序7.1 其他版本的快排7.2 优化7.3 ⭐非递归7. 🌟归并排序7.1 ⭐非递归8. 计数排序三、总结1. 分析排序 (Sorting) 是计算机…
最新文章