当前位置: 首页 > news >正文

链表——单链表

题目描述

实现一个单链表,链表初始为空,支持三种操作:
(1) 向链表头插入一个数;
(2) 删除第 k 个插入的数后面的数;
(3) 在第 k 个插入的数后插入一个数
现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。
注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…,第 n 个插入的数。

输入格式

第一行包含整数 M (1≤M≤100000),表示操作次数。
接下来 M 行,每行包含一个操作命令,操作命令可能为以下几种:
(1) H x,表示向链表头插入一个数 x。
(2) D k,表示删除第 k 个输入的数后面的数(当 k 为 0 时,表示删除头结点)。
(3) I k x,表示在第 k 个输入的数后面插入一个数 x(此操作中 k 均大于 0)。
保证所有操作保证合法。

输出格式

共一行,将整个链表从头到尾输出。

输入样例

10
H 9
I 1 1
D 1
D 0
H 6
I 3 6
I 4 5
I 4 5
I 3 4
D 6

输出样例

6 4 6 5

注释版代码

#include<iostream>
using namespace std;
const int N=100010;
int head,idx,x,k;
int e[N],ne[N];
//初始化链表,使得头节点head指向空,即为-1,idx表示当前用到了哪个节点,初始化为0
void init()
{head=-1;idx=0;
}
//向头节点插入x
void add_to_head(int x)
{e[idx]=x;//先将x的值插入到idx这个位置ne[idx]=head;//然后将头节点指针指向idx的指针,也就是说原来头指针的下一个,现在变成了idx的下一个head=idx++;//然后再将idx这个位置赋给头指针,这样头指针的下一个就是idx了,这样x就被插进去了//那么这个顺序是不可以变得,因为如果先把idx赋给head,head原来的值就被覆盖了,这时的head不是原来的
}
//将x插入k后面,原理同上
void add(int k,int x)
{e[idx]=x;ne[idx]=ne[k];ne[k]=idx++;
}
//删除k后面的那个节点
void remove(int k)
{ne[k]=ne[ne[k]];//只需要将第k个节点的下一个位置指向下一个的下一个位置即可
}
int main()
{int m;cin>>m;init();while(m--){char op;cin>>op;if(op=='H'){cin>>x;add_to_head(x);}else if(op=='D'){cin>>k;if(k==0) head=ne[head];//当k为0时,删除头节点remove(k-1);//k-1是因为第k个插入的数的下标是0}else{cin>>k>>x;add(k-1,x);//同理}}for(int i=head;i!=-1;i=ne[i]){cout<<e[i]<<' ';}cout<<endl;return 0;
}

相关文章:

链表——单链表

题目描述 实现一个单链表&#xff0c;链表初始为空&#xff0c;支持三种操作&#xff1a; (1) 向链表头插入一个数&#xff1b; (2) 删除第 k 个插入的数后面的数&#xff1b; (3) 在第 k 个插入的数后插入一个数 现在要对该链表进行 M 次操作&#xff0c;进行完所有操作后&am…...

【YOLO学习】YOLOv5口罩检测实战

文章目录 1. 环境配置2. 下载代码3. 安装库3.1 安装pytorch3.2 安装其他库 4. 测试5. 数据标注6. 模型训练7. 界面可视化 1. 环境配置 1. 先参考其他文章安装 Anaconda 或者 Miniconda&#xff0c;我安装的是 Miniconda。 2. 更换国内源&#xff0c;以加快速度 。可以参考下面这…...

场景题1-设计redis的key和value的原则

在设计 Redis 的 key 和 value 时&#xff0c;遵循一些最佳实践和设计原则可以确保系统的性能、可扩展性和易维护性。以下是设计 Redis key 和 value 时的常见原则&#xff1a; 1.RedisKey的设计原则 1.1.简短有意义 1&#xff09;Redis 是内存数据库&#xff0c;key 越短&am…...

Shell-使用函数

在 Shell 脚本中&#xff0c;函数是由一段代码定义的&#xff0c;可以被重复调用。Shell 函数的定义和调用相对简单&#xff0c;并且它支持参数传递和返回值。错误处理在 Shell 中也非常重要&#xff0c;通常通过检查返回的状态码来判断是否有错误发生。 1.Shell 函数的定义和…...

Git介绍--github/gitee/gitlab使用

一、Git的介绍 1.1、学习Git的原因&#xff1a;资源管理 1.2、SCM软件的介绍 软件配置管理(SCM)是指通过执行版本控制、变更控制的规程&#xff0c;以及使用合适的配置管理软件来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。 二、版本控制软件 …...

【ubuntu】【VirtualBox】VirtualBox无法加载USB移动设备的解决方法(支持U盘启动盘)

TOC 提示&#xff1a;测试可用 一、安装VirtualBox VirtualBox-7.1.2-164945-Win。 下载路径。 Download_Old_Builds_7_0 – Oracle VirtualBox 二、安装Oracle_VirtualBox_Extension_Pack-7.1.2 下载路径见上文。 三、安装增强功能 四、挂载USB 4.1 设置USB协议 4.2 挂…...

Koa2+mongodb项目实战1(项目搭建)

前言 在正式开始之前&#xff0c;需要先知道用到的东西&#xff1a; koa&#xff1a;Koa 是一个基于 Node.js 的 Web 应用框架&#xff0c;非常适合开发API服务&#xff0c;可以与前端框架&#xff08;如 Vue.js、React.js&#xff09;结合使用&#xff0c;实现前后端分离的开…...

Pyhton爬虫使用Selenium实现浏览器自动化操作抓取网页

第三方库Selenium主要是用来抓取动态生成的网页数据&#xff0c;有些网站的内容要下拉网页才会动态加载&#xff0c;特别是那些使用javaScript渲染的内容。当然Selenium还可用于自动化浏览器操作&#xff0c;比如编写一个自动抢火车票的python脚本&#xff0c;这并不难实现。接…...

矩阵学习过程中的一些思考

2024.09.27&#xff08;学习鸢尾花书_矩阵力量_Ch20&#xff09; &#xff08;1&#xff09;所有中心过原点的椭圆都可以用一个二维矩阵表示&#xff0c;且特征值表示长短轴长度&#xff0c;特征向量表示长短轴所在方向的单位向量&#xff08;表征椭圆旋转方向&#xff09;&am…...

初识Django

前言: 各位观众老爷们好&#xff0c;最近几个月都没怎么更新&#xff0c;主要是最近的事情太多了&#xff0c;我也在继续学习Django框架&#xff0c;之前还参加了一些比赛&#xff0c;现在我会开始持续更新Django的学习&#xff0c;这个过程会比较久&#xff0c;我会把我学习的…...

VirtualBox虚拟机连接宿主机并能够上网(小白向)

现存问题 windows系统主要使用vmare和virtualbox两种虚拟机&#xff0c;virtualbox相对于vmare更加轻便&#xff0c;但少有博客能够详细说明使用virtualbox的教程。踩了网上的坑后&#xff0c;决定写一篇文章介绍virtualbox虚拟机上网的流程。 需求 1. virtualbox虚拟机与宿主机…...

深度学习每周学习总结J1(ResNet-50算法实战与解析 - 鸟类识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 0. 总结1. 设置GPU2. 导入数据及处理部分3. 划分数据集4. 模型构建部分5. 设置超参数&#xff1a;定义损失函数&#xff0c;学习率&a…...

商家营销工具架构升级总结

今年以来&#xff0c;商家营销工具业务需求井喷&#xff0c;需求数量多且耗时都比较长&#xff0c;技术侧面临很大的压力。因此这篇文章主要讨论营销工具前端要如何应对这样大规模的业务需求。 问题拆解 我们核心面对的问题主要如下&#xff1a; 1. 人力有限 我们除了要支撑存量…...

移动硬盘无法读取:问题解析与高效数据恢复实战

一、移动硬盘无法读取的困扰 在数字化时代&#xff0c;移动硬盘作为数据存储和传输的重要媒介&#xff0c;承载着大量珍贵的数据资源。然而&#xff0c;当移动硬盘突然无法读取时&#xff0c;我们往往会陷入深深的困扰之中。这种无法读取的现象可能表现为插入电脑后毫无反应、…...

20241005给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Android12时使用iperf3测网速

20241005给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Android12时使用iperf3测网速 2024/10/5 14:06 对于荣品RD-RK3588-AHD开发板&#xff0c;eth1位置上的PCIE转RJ458的以太网卡是默认好用的&#xff01; PCIE TO RJ45&#xff1a;RTL8111HS 被识别成为eth0了。inet addr:192.…...

node配置swagger

安装swagger npm install swagger-jsdoc swagger-ui-express 创建 swagger.js 配置文件 ​ const path require(path); const express require(express); const swaggerUI require(swagger-ui-express); const swaggerJsDoc require(swagger-jsdoc); // 修改 swaggerDoc…...

MATLAB plot画线的颜色 形状

文章目录 前言一、MATLAB plot画线的颜色 形状&#xff1f;颜色选项标记选项示例代码详细说明 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、MA…...

Goland使用SSH远程Linux进行断点调试 (兼容私有库)

① 前置需求 ssh远程的 Linux 服务器必须安装 高于本地的 Go推荐golang 安装方式使用 apt yum snap 等系统自管理方式&#xff0c;&#xff08;要安装最新版本的可以找找第三方源&#xff09;&#xff0c;如无特殊需求不要自行编译安装golang ② Goland设置 2.1、设置项处理…...

LLM | Ollama WebUI 安装使用(pip 版)

Open WebUI (Formerly Ollama WebUI) 也可以通过 docker 来安装使用 1. 详细步骤 1.1 安装 Open WebUI # 官方建议使用 python3.11&#xff08;2024.09.27&#xff09;&#xff0c;conda 的使用参考其他文章 conda create -n open-webui python3.11 conda activate open-web…...

Three.js基础内容(一)

目录 一、几何体顶点和模型 1.1、点模型对象(Points)渲染顶点数据 1.2、线模型(Line)渲染顶点数据&#xff08;画个心&#xff09; 1.3、网格模型(Mesh)渲染顶点数据(三角形概念) 1.4、构建一个矩形平面几何体 1.5、几何顶点索引数据 1.6、顶点法线数据 1.7、查看three…...

WCHUsbSerTest:串口批量自动化测试工具的原理、配置与生产实践

1. 项目概述&#xff1a;为什么我们需要一个专用的串口批量测试工具&#xff1f;在嵌入式硬件开发、工业控制或者物联网设备的生产线上&#xff0c;USB转串口芯片和模块是连接PC与目标设备最常用、最基础的桥梁。无论是给单片机烧录程序&#xff0c;还是与PLC、传感器进行数据交…...

MySQL-进阶篇-锁

温馨提示&#xff1a;建议在PC端浏览~锁概述介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性…...

3步掌握B站视频智能分析:BiliTools免费工具箱终极指南

3步掌握B站视频智能分析&#xff1a;BiliTools免费工具箱终极指南 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 你…...

LabVIEW 32位版如何调用Halcon 17.12的.NET库?手把手教你打通图像处理流程

LabVIEW 32位版与Halcon 17.12 .NET库深度兼容指南&#xff1a;从原理到实战 在工业视觉和自动化测试领域&#xff0c;LabVIEW与Halcon的组合堪称黄金搭档。但当我们试图在32位LabVIEW环境中调用Halcon 17.12的.NET库时&#xff0c;常常会遇到各种"拦路虎"——从神秘…...

抖音视频批量下载工具终极指南:3分钟实现高效无水印下载

抖音视频批量下载工具终极指南&#xff1a;3分钟实现高效无水印下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback sup…...

FutureTask.get()阻塞机制解析:基于AQS与状态机的线程协作

1. 项目概述&#xff1a;从异步编程的痛点说起在Java并发编程的日常开发中&#xff0c;我们经常遇到一个经典场景&#xff1a;主线程需要启动一个耗时的计算任务&#xff0c;但又不能干等着&#xff0c;希望在任务完成后能“拿到”那个结果。Thread类本身只负责执行&#xff0c…...

突破性技术:CXPatcher如何在Mac上实现CrossOver性能极限的完整指南

突破性技术&#xff1a;CXPatcher如何在Mac上实现CrossOver性能极限的完整指南 【免费下载链接】CXPatcher A patcher to upgrade Crossover dependencies and improve compatibility 项目地址: https://gitcode.com/gh_mirrors/cx/CXPatcher 对于在macOS上运行Windows应…...

基础设施监控:全面监控基础设施状态

基础设施监控&#xff1a;全面监控基础设施状态 一、基础设施监控概述 1.1 基础设施监控的定义 基础设施监控是指对IT基础设施的状态、性能和可用性进行持续监控和管理的过程。它包括服务器、网络、存储和应用等方面的监控&#xff0c;确保基础设施的稳定运行和高效利用。 1.2 …...

告别编译报错!手把手教你为最新版Keil MDK安装ARM Compiler 5(保姆级图文)

嵌入式开发者的救星&#xff1a;彻底解决Keil MDK缺失ARM Compiler 5的终极方案 当你满怀信心地打开一个历史遗留的嵌入式项目&#xff0c;准备进行功能迭代时&#xff0c;Keil MDK突然弹出一个冰冷的错误窗口&#xff1a;"Error: Compiler V5.06 update 7 (build 960) no…...

D3KeyHelper:暗黑3终极宏工具完整指南 - 5分钟快速上手

D3KeyHelper&#xff1a;暗黑3终极宏工具完整指南 - 5分钟快速上手 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3KeyHelper是一款专为《暗黑破坏…...