85.【C语言】数据结构之顺序表的中间插入和删除及遍历查找
目录
3.操作顺序表
1.分析中间插入函数
函数的参数
代码示例
图片分析
main.c部分改为
在SeqList.h添加SLInsert函数的声明
运行结果
2.分析中间删除函数
函数的参数
代码示例
图片分析
main.c部分改为
在SeqList.h添加SLErase函数的声明
运行结果
承接84.【C语言】数据结构之顺序表的头部插入和删除文章
3.操作顺序表
1.分析中间插入函数
函数的参数
中间的位置:结构体指针SL* ps(这样就可以使用ps->a[...])和插入的位置int pos
插入的元素数据:SLDataType x
代码示例
void SLInsert(SL* ps, int pos, SLDataType x)
{assert(ps);//pos==0为头插,pos==ps-<size为尾插assert(pos >= 0 && pos <= ps->size);SLCheckCapacity(ps);int end = ps->size - 1;while (pos <= end){ps->a[end + 1] = ps->a[end];end--;}ps->a[pos] = x;//在a[pos]处插入新元素ps->size++;
}
图片分析

main.c部分改为
void TestSeqList1()
{SL s;SLInit(&s);SLPushBack(&s, 1);SLPushBack(&s, 2);SLPushBack(&s, 3);SLPushBack(&s, 4);SLPushBack(&s, 5);SLPrint(&s);SLInsert(&s,1,6);SLPrint(&s);SLDestory(&s);
}
在SeqList.h添加SLInsert函数的声明
运行结果
在中间插入了一个6

有了SLInsert函数可以对84.【C语言】数据结构之顺序表的头部插入和删除文章的SLPushFront函数做简化
void SLPushFront(SL* ps,SLDataType x)
{assert(ps);SLCheckCapacity(ps);SLInsert(ps, 0, x);
}
同理对SLPushBack函数
void SLPushBack(SL* ps, SLDataType x)
{assert(ps);SLCheckCapacity(ps);SLInsert(ps, ps->size, x);
}
2.分析中间删除函数
函数的参数
同中间插入函数
代码示例
void SLErase(SL* ps, int pos)
{assert(ps);assert(0 <= pos && pos < ps->size);int begin = pos + 1;while (begin < ps->size){ps->a[begin - 1] = ps->a[begin];begin++;}ps->size--;//ps->size不用单独检查是否为负//在assert断言中,已经交代了pos < ps->size,pos不可能为负
}
图片分析

main.c部分改为
void TestSeqList1()
{SL s;SLInit(&s);SLPushBack(&s, 1);SLPushBack(&s, 2);SLPushBack(&s, 3);SLPushBack(&s, 4);SLPushBack(&s, 5);SLPrint(&s);SLErase(&s,1);SLPrint(&s);SLDestory(&s);
}
在SeqList.h添加SLErase函数的声明
运行结果

有了SLErase函数可以对84.【C语言】数据结构之顺序表的头部插入和删除文章的SLPopFront函数做简化
void SLPopFront(SL * ps)
{SLErase(ps, 0);
}
同理对SLPopBack函数
void SLPopBack(SL* ps)
{SLErase(ps, ps->size - 1);
}
3.分析遍历查找函数
代码示例
int SLFind(SL* ps, SLDataType find)
{assert(ps);for (int i = 0; i < ps->size; i++){if (ps->a[i] == find)return find;}//遍历查找return -1;//查不到则返回-1
}
在SeqList.h添加SLFind函数的声明
相关文章:
85.【C语言】数据结构之顺序表的中间插入和删除及遍历查找
目录 3.操作顺序表 1.分析中间插入函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLInsert函数的声明 运行结果 2.分析中间删除函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLErase函数的声明 运行结果 承接84.【C语…...
触觉智能Purple Pi OH鸿蒙开发板成功适配OpenHarmony5.0 Release,开启新征程!
10月22日,触觉智能Purple Pi OH鸿蒙开发板迎来了重大系统版本升级,成功适配OpenHarmony5.0 Release,为嵌入式开发者和科技爱好者们带来了全新的机遇与挑战! 触觉智能 Purple Pi OH 开发板一直以来都以其高品质和超高性价比而著称。…...
分布式解决方案---分布式ID
目录 是什么 特点 全局唯一 高并发 高可用 怎么做 实现方案 是什么 分布式ID是指在分布式系统中生成的唯一标识符。由于分布式系统的特点,多个节点可能会同时生成ID,因此需要确保每个ID在整个系统中是唯一的。 重点就是唯一性!&#x…...
httpd服务
文章目录 1、搭建一个网络yum源2、基于域名访问的虚拟主机3、基于端口来访问域名4、搭建个人网站5、加密访问显示自定义网页内容 1、搭建一个网络yum源 [roottest01 conf.d]# cat repo.conf <virtualhost *:80>documentroot /var/www/html/ServerName 10.104.43.154ali…...
Linux系统安装Redis详细操作步骤(二进制发布包安装方式)
安装方式介绍 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布,只要解压,修改配置即可rpm安装软件已经按照redhat的包管理规范进…...
Jenkins和Gitlab整合构建CI/CD流水线
配置环境 虚拟机建议4G起步 192.168.58.199 192.168.58.200 部署Jenkins 部署Jenkins参考这篇文章:Jenkins安装部署_connecting to pkg.jenkins.io (pkg.jenkins.io)|151.-CSDN博客 安装完毕之后根据下图操作 选择git,添加git仓库克隆url,选…...
14 C语言中的关键字
C语言中的关键字 在C语言中,关键字是一些预定义的单词,它们具有特殊的意义和用途。这些关键字不能用作标识符,比如变量名、函数名等,因为它们被保留用于特定的语言结构和操作。 关键字的分类 C语言的关键字可以分为几个主要类别…...
(11)(2.1.7) FETtec OneWire ESCs(一)
文章目录 前言 1 去哪里买 2 连接 3 组态 前言 !Note 此功能在固件版本 4.1.1 及更高版本上可用。 OneWire 是 FETtec 的 ESC 双向通信协议(ESC bi-directional communication protocol)。 FETtec OneWire ESC 的遥测信息被发送回自动驾驶仪: 电…...
Python 异步编程:使用 `asyncio.to_thread` 和 `asyncio.Queue` 处理任务队列
Python 异步编程:使用 asyncio.to_thread 和 asyncio.Queue 处理任务队列 1. 什么是 asyncio.to_thread?2. 什么是 asyncio.Queue?3. 示例代码:使用 asyncio.to_thread 和 asyncio.Queue 处理任务队列示例代码代码解释运行结果 4.…...
【问题解决】Flink在linux上运行成功但是无法访问webUI界面
一,问题 在搭建Flink的时候,已经在linux服务器上运行了./start-cluster.sh, 而且日志显示已经成功了。 服务器上也没有开启防火墙 正常来说应该能通过ip:8081来访问(8081是Flink WebUI的默认端口),但是访问的时候,显示…...
【问题解决】pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
今天配置完poetry环境变量之后pnpm不能用了 具体报错 pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1pnpm run dev~~~~ Ca…...
微信网页授权回调地址放多个参数的方法
https://open.weixin.qq.com/connect/oauth2/authorize?appidAPPID&redirect_uriREDIRECT_URI&response_typecode&scopeSCOPE&stateSTATE#wechat_redirect 跳转后地址 redirect_uri/?codeCODE&stateSTATE。 redirect_uri如果不进行urlencode编码, 跳转后…...
相机工作距离计算
镜头 基础参数 焦距 例如,使用1英寸靶面(12.8mm x 9.6mm)的相机,工作距离WD是300mm,视野FOV的高度是120mm,那么光学放大倍率𝛽 9.6𝑚𝑚/120𝑚𝑚0.08 ,…...
Pandas模块之垂直或水平交错条形图
目录 df.plot() 函数Pandas模块之垂直条形图Pandas模块之水平交错条形图 df.plot() 函数 df.plot() 是 Pandas 中的一个函数,用于绘制数据框中的数据。它是基于 Matplotlib 库构建的,可以轻松地创建各种类型的图表,包括折线图、柱状图、散点…...
ArcGIS必会的选择要素方法(AND、OR、R、IN等)位置选择等
今天来看看ArcGIS中的几个选择的重要使用方法 1、常规选择、 2、模糊查询、 3、组合复合条件查询(AND、OR、IN), 4、空值NULL查询 5、位置选择 推荐学习: 以梦为马,超过万名学员学习ArcGIS入门到实战的应用课程…...
快速创建一个微信小程序,详细步骤以及示范程序代码
创建一个微信小程序涉及前端和后端的搭建与联调。以下是一个快速创建微信小程序的详细步骤以及示范程序代码。 一、注册微信小程序账号 前往微信公众平台,注册一个小程序账号并完成相关设置。注册完成后,获取小程序的AppID,这是后续开发过程…...
【继承】讲解
访问控制 传递下去可以一共分为四个特性 公有保护私有存在但不可见 虽然它们各自的特性不同,能不能使用也另说,但是在建立类对象的时候,系统都会申请相应的内存,也就是说,无论它们能不能用,它们都存在。 …...
无人机之低空管控技术
无人机的低空管控技术是对低空飞行活动进行管理和控制的一系列措施和技术的总称,旨在确保低空飞行活动的安全、有序和高效。 一、主要技术手段 雷达系统监测 原理:雷达是利用电磁波探测目标的电子设备,通过发射电磁波对目标进行照射并接收…...
探索 DevOps:从概念到实践
引言 在现代软件开发的世界中,DevOps 已成为一个热门词汇。它不仅改变了开发和运维的合作方式,还显著提升了软件交付的速度和质量。那么,究竟什么是 DevOps?它的定义和目标是什么?本文将为你详细解释 DevOps 的基本概念,并通过代码示例和图片帮助你更好地理解这一重要的…...
联通国际云视频:高清、稳定、易用的云端会议平台
一、产品概述 中国联通国际公司推出的云视频产品,是一款基于先进云计算技术的云会议架构平台。它旨在为用户提供高品质、方便快捷、简单易用、灵活多变、稳定可靠的视频通讯解决方案,满足用户随时随地高效沟通的需求。 二、主要功能 音视频及数据共享 …...
3分钟学会Qwerty Learner:打字练习与单词记忆的完美结合
3分钟学会Qwerty Learner:打字练习与单词记忆的完美结合 【免费下载链接】qwerty-learner 项目地址: https://gitcode.com/GitHub_Trending/qw/qwerty-learner Qwerty Learner是一款专为键盘工作者设计的开源学习工具,巧妙地将英语单词记忆与打字…...
Qwen3-Reranker-0.6B快速体验:搭建个人语义排序服务的简单方法
Qwen3-Reranker-0.6B快速体验:搭建个人语义排序服务的简单方法 1. 为什么你需要一个轻量级语义排序服务 在信息检索和问答系统中,语义排序(Reranking)是一个关键环节。想象一下,当用户输入一个问题后,系统…...
Qwen3-ASR-1.7B效果实测:识别普通话、英语、方言,准确率惊人
Qwen3-ASR-1.7B效果实测:识别普通话、英语、方言,准确率惊人 1. 多语言语音识别新标杆 当我第一次听到Qwen3-ASR-1.7B能够识别30种语言和22种中文方言时,说实话我是持怀疑态度的。毕竟在语音识别领域,支持的语言越多,…...
Hunyuan-MT-7B真实案例集:电商商品描述多语言生成效果
Hunyuan-MT-7B真实案例集:电商商品描述多语言生成效果 1. 引言:当电商遇上多语言翻译 想象一下这个场景:你是一家跨境电商公司的运营,手头有一款新品的英文描述,需要快速翻译成法语、西班牙语、德语、日语等十几种语…...
Flash存储、外设操作与系统架构
课程目标与知识体系 课程目的 掌握STM32内部Flash读写操作 熟悉STM32存储器映射 了解malloc动态内存分配 理解STM32启动流程与地址空间知识点体系STM32系统架构 ├── 外设操作(GPIO/USART/DMA) ├── 存储器系统 │ ├── 存储器分类 │ ├── 存储…...
Janus-Pro-7B在SolidWorks设计中的应用:工程问题智能答疑
Janus-Pro-7B在SolidWorks设计中的应用:工程问题智能答疑 1. 引言 想象一下这个场景:你正在用SolidWorks赶一个复杂的装配体设计,突然卡在了一个配合关系上,或者对某个特征的生成顺序拿不准。这时候,你是去翻几百页的…...
CATIA数控加工仿真:铣平面粗加工的关键步骤与优化技巧
1. CATIA数控加工仿真入门:从零开始掌握铣平面粗加工 第一次接触CATIA数控加工仿真时,我和大多数新手一样被满屏的参数搞得头晕眼花。直到在车间跟老师傅学了三个月,才发现铣平面粗加工这个基础操作里藏着这么多门道。简单来说,这…...
jsoncpp实战:从配置文件解析到网络数据交换,我的C++项目数据管理方案
JSONCPP实战:从配置文件解析到网络数据交换的C数据管理方案 在C后端服务开发中,JSON数据格式因其轻量级和易读性成为配置文件和API通信的首选。作为从业多年的C开发者,我发现jsoncpp库在项目中的灵活运用能显著提升开发效率。本文将分享我在实…...
FastAPI负载测试:持续集成的完整指南
FastAPI负载测试:持续集成的完整指南 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI作为高性能、易学习的现代Pyth…...
macOS效率革命:3个全局快捷键让Finder目录操作提速300%
macOS效率革命:3个全局快捷键让Finder目录操作提速300% 【免费下载链接】OpenInTerminal ✨ Finder Toolbar app for macOS to open the current directory in Terminal, iTerm, Hyper or Alacritty. 项目地址: https://gitcode.com/gh_mirrors/op/OpenInTerminal…...
