数据结构中的顺序表的删除和查找

news2024/11/26 8:24:00
  • 对于顺序表,它包括:初始化,取值,查找,插入,以及删除。接下来就讲一讲删除和查找。

  • 删除:它包括头删和尾删,为什么顺序表中要用到删除呢?按我的理解就是:为插入做准备的。如果不逍遥这个数就可以通过删除轻而易举的就删除掉了,如果想插入一个数,只需要删除那个数就可以插入进去了。

  • 头删:代码:
    //头删
    void SLPopFront(SL* ps)
    {
    	assert(ps);
    	assert(ps->size);
    
    	//数据整体往前挪动一位
    	//for循环
    	
    	for (int i = 0; i < ps->size - 1; i++)
    	{
    		ps->arr[i] = ps->arr[i + 1];
    	}
    	ps->size--;

    for循环是为了向前挪动一位的。ps->size--,就是数据个数减一。

  • 尾删:代码:

    //尾删
    
    void SLPopBack(SL* ps)
    {
    	assert(ps);
    	assert(ps->size);
    	//顺序表不能为空
    	--ps->size;
    }

    尾删就相对简单一点,

  • 头删,尾删都写好以后,那就是指定位置之前插入/删除数据,头两个只是随意删除的,而在指定位置之前插入/删除数据,就是对顺序表有利的代码:

    //在指定位置之前插入数据
    void SLInsert(SL * ps, int pos, SLDataType x)
    {
    	assert(ps);
    	assert(pos >= 0 && pos <= ps->size);
    	//插入数据:空间够不够
    	SLCheckCapacity(ps);
    	//让pos及以后的数据整体往后挪动一位
    	for (int i = ps->size; i > pos; i--)
    	{
    		ps->arr[i] = ps->arr[i - 1];
    	}
    	ps->arr[pos] = x;
    	ps->size++;
    }

    在指定位置之前插入数据,要确保内存空间够不够。

  • 删除指定位置的数据:我们直接上代码为://删除指定位置的数据:
//删除指定位置的数据
void SLErase(SL* ps, int pos)
{
	assert(ps);
	assert(pos >= 0 && pos <= ps->size);
	for (int i = pos; i < ps->size; i++)
	{
		ps->arr[i] = ps->arr[i + 1];
	}
	ps->size++;
}

  • 查找数据:这就比较好写了,则代码为:
    //查找
    int SLFind(SL* ps, SLDataType x)
    {
    	assert(ps);
    	for (int i = pos; i < ps->size; i++)
    	{
    		if (ps->arr[i] == x)
    		{
    			//找到了
    			return 1;
    		}
    	}
    
    	//没有找到
    	return -1;
    
    }
    
    

    对于查找,只需要知道x在哪个位置,然后用for循环就可以了。

  • 对于顺序表,就是这么多的知识点。只要知道它的逻辑结构就可以了。如果你想看所有的代码,可以访问我的gitte哦

我的gitte是

(anhuijiangkun) - Gitee.comicon-default.png?t=N7T8https://gitee.com/anhuijiangkun

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

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

相关文章

Linux服务器硬件及RAID配置

一、服务器硬件 塔式服务器&#xff1a;最初的服务器形态之一&#xff0c;类似于传统的台式电脑&#xff0c;但具有更强的处理能力和稳定性&#xff0c;适合小型企业或部门使用。 机架式服务器&#xff1a;设计为可安装在标准化机架内的模块化单元&#xff0c;可以有效地节省空…

上位机图像处理和嵌入式模块部署(树莓派4b固件功能设计)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过&#xff0c;上位机的功能都是基于插件进行开发的。但是上位机的成本比较贵&#xff0c;一般的企业不一定愿意接接受。这个时候另外一…

Notion 开源替代品 AFFINE 部署和使用教程

AFFiNE 是一款完全开源的 Notion Miro 替代品&#xff0c;与 Notion 相比&#xff0c;AFFiNE 更注重隐私安全&#xff0c;优先将笔记内容保存到本地。 GitHub 地址&#xff1a;https://github.com/toeverything/AFFiNE AFFiNE 使用 Rust 和 Typescript 构建&#xff0c;只需…

重生奇迹mu怎么卡智力的方法

1、准备3个号A打手,B智力MM,C随意。 2、使用C匹配组队,但是不能选择自动进入队伍。 3、用A申请C的队伍,但是C不做通过处理。 4、用A组B,用快捷键D的方式。 5、所谓的卡智力就是智力MM可以给打手加属性加血&#xff0c;但是并不在一个队伍里享受经验&#xff0c;适用于MM不是…

Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

什么是Serlvet&#xff1f; Servlet其实就是一个遵循Servlet开发的java类。Serlvet是由服务器调用的&#xff0c;运行在服务器端。 为什么要用到Serlvet&#xff1f; 我们编写java程序想要在网上实现 聊天、发帖、这样一些的交互功能&#xff0c;普通的java技术是非常难完成…

【深度学习】最强算法之:Transformer

Transformer 1、引言2、Transformer2.1 引言2.2 核心概念2.3 应用2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;昨天的感受咋样 小鱼&#xff1a;啥感受啊&#xff1f; 小屌丝&#xff1a;你确定不知道&#xff1f; 小鱼&#xff1a;我… 小屌…

软考 - 系统架构设计师 - 设计模式

概念 每一个设计模式描述了一个在我们周围不断重复发生的问题&#xff0c;以及该问题解决方案的核心&#xff0c;这样&#xff0c;就可以在遇到相同的问题时使用该解决方案进行解决&#xff0c;不必进行重复的工作&#xff0c;设计模式的核心在于提供了问题的解决方案&#xff…

代码学习记录25---单调栈

随想录日记part45 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.04.17 主要内容&#xff1a;今天开始要学习单调栈的相关知识了&#xff0c;今天的内容主要涉及&#xff1a;每日温度 &#xff1b;下一个更大元素 I 739. 每日温度 496.下一个更大元素 I Topic…

数仓建模—逻辑数据模型

数仓建模—逻辑数据模型 逻辑数据模型 (LDM Logical Data Model) 是一种详细描述数据元素的数据模型,用于开发对数据实体、属性、键和关系的直观理解。 这种模型独特地独立于特定的数据库,以便为数据管理系统中语义层的组件建立基础结构。将 LDM 视为一个蓝图:它代表在整个…

软件无线电安全之GNU Radio基础 -上

GNU Radio介绍 GNU Radio是一款开源的软件工具集&#xff0c;专注于软件定义无线电&#xff08;SDR&#xff09;系统的设计和实现。该工具集支持多种SDR硬件平台&#xff0c;包括USRP、HackRF One和RTL-SDR等。用户可以通过GNU Radio Companion构建流程图&#xff0c;使用不同…

记录Windows XP系统安装详细图文版安装日志

一、准备工作 一、下载镜像文件 我用的镜像文件在网盘可自行下载&#xff1a; 点击下载OSI镜像文件提取码&#xff1a;888999 系统安装介质准备&#xff1a;首先&#xff0c;你需要准备一个Windows XP的安装介质。这可以是光盘&#xff0c;也可以是U盘。确保你的安装介质是…

MyBatis 源码分析 - SQL 的执行过程

MyBatis 源码分析 - SQL 的执行过程 * 本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程。该过程本身比较复杂&#xff0c;牵涉到的技术点比较多。包括但不限于 Mapper 接口代理类的生成、接口方法的解析、SQL 语句的解析、运行时参数的绑定、查询结果自动映射、延…

Linux(磁盘管理与文件系统)

目录 1. 磁盘基础 1.1 磁盘结构 1.2 MBR 1.3 磁盘分区结构 2. 文件系统类型 2.1 XFS文件系统 2.2 SWAP 2.3 fdisk命令 2.4 创建新硬盘 3.创建文件系统 3.1 mkfs 3.2 挂载、卸载文件系统 3.3 查看磁盘使用情况 1. 磁盘基础 1.1 磁盘结构 磁盘的物理结构 盘片:硬…

Java项目实现图形验证码(Hutool)

项目架构&#xff1a; 使用SpringCloudmysqlmybatis-plus需要将数据库中的数据导出到Excel文件中 前端为Vue2 业务场景&#xff1a; 登录时使用验证码登录 1.1 打开hutool, 搜索 图片验证码 1.2后端编写生产验证码方法 1.3前端 1.3.1展示验证码 1.3.2 前端方法 1.3.2.1UU…

快速入门Web开发(上) 黑马程序员JavaWeb开发教程

快速入门Web开发&#xff08;上&#xff09; 本文档是黑马程序员的 黑马程序员JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程&#xff08;涵盖SpringMyBatisSpringMVCSpringBoot等&#xff09;_哔哩哔哩_bilibili上这篇没有写什么很深的个人见解 但下篇有 开发Web网…

02 MySQL --DQL专题--条件查询、函数、分组查询

一些盲点. 数据库中仅有月薪字段&#xff08;month_salary&#xff09;&#xff0c;要求查询所有员工的年薪&#xff0c;并以年薪(year_salary)输出&#xff1a; 分析&#xff1a; 查询操作中&#xff0c;字段可以参与数学运算as 起别名&#xff0c;但实际上可以省略 #以下…

Stronghold Village

有了近2000个预制件和大量资产,您可以用基本的或先进的模块化预制件建造您的设防城镇或梦幻村庄,其中有许多定制选项和大量道具和物品 【资产描述】 你准备好建造你的史诗般的奇幻设防小镇了吗?有了这个庞大的资产库,您将能够创建村庄、城市、据点、乡村建筑、大教堂、城堡…

Tricentis测试生成式人工智能系统和红队:入门指南

Tricentis测试生成式人工智能系统和红队:入门指南 测试人工智能并确保其责任、安全和保障的话题从未如此紧迫。自 2021 年以来,人工智能滥用的争议和事件增加了26 倍,凸显了日益增长的担忧。用户很快就会发现,人工智能工具并非万无一失。他们可能会表现出过度自信,并且缺…

JavaWeb--04YApi,Vue-cli脚手架Node.js环境搭建,创建第一个Vue项目

04 1 Yapi2 Vue-cli脚手架Node.js环境搭建配置npm的全局安装路径 3 创建项目&#xff08;这个看下一篇文章吧&#xff09; 1 Yapi 前后端分离中的重要枢纽"接口文档",以下一款为Yapi的接口文档 介绍&#xff1a;YApi 是高效、易用、功能强大的 api 管理平台&#…

使用vite从头搭建一个vue3项目(四)使用axios封装request.js文件,并使用proxy解决跨域问题

目录 一、创建request.js文件二、创建axios实例三、创建请求、响应拦截器四、使用 request.js&#xff0c;测试接口&#xff1a;https://api.uomg.com/api/rand.qinghua1、调取接口代码书写2、注意&#xff08;跨域问题&#xff09; axios 的二次封装有三个要点&#xff1a; 创…