数据结构初阶 顺序表补充

news/2024/5/7 7:37:02/文章来源:https://blog.csdn.net/meihaoshy/article/details/127188412

一. 题目的要求

写出三种链表的接口函数

它们的功能分别是

1 查找数的位置

2 在pos位置插入值

3 在pos位置删除值

二. 实现pos

这个其实很简单 找到一步步遍历 找到这个数字就返回 找不到就提示用户下 这

个数字不存在

int SeqListFind(SL* ps,int x)
{int i;for ( i = 0; i < ps->size; i++){if (ps->a[i]==x){return i;}}if (i==ps->size){printf("不存在这个数");}return -1;
}

三. 实现在pos位置处插入数字

这个其实和我们的头插表示差不多

只要找到pos的位置

首先判断需不需要扩容

然后再将需要插入的数字依次向后面的排一位

之后再将这个数字插入就好

代码表示如下

void SeqListPushPos(SL* ps, int x, int y)
{if ((ps->size) == (ps->capacity)){int newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;ps->capacity = newcapacity;SLDateType* tmp = (SLDateType*)realloc(ps->a, newcapacity * sizeof(SLDateType));if (tmp == NULL){perror("pushback realloc");}ps->a = tmp;}// 其实效果和头插差不多 // 只不过头插的起始位置有点变化了int i;for (i = ps->size - 1; i >= x; i--){(ps->a[i + 1]) = (ps->a[i]);}ps->a[x] = y;ps->size++;
}

四. 在pos处删除数字

这个和头删也差不多

只需要也只不过是前面0的界限变成pos的界限

代码表示如下

void SeqListPopPos(SL* ps, int x)
{assert(ps->size != 0);int i;for ( i =x; i <ps->size-1 ; i++){ps->a[i] = ps->a[i + 1];}ps->size--;
}

演示代码如下

int main()
{SL a1;SeqListInit(&a1);SeqListPushFront(&a1, 1);SeqListPushFront(&a1, 2);SeqListPushFront(&a1, 3);SeqListPushFront(&a1, 4);SeqListPushFront(&a1, 5);SeqListPrint(&a1);int pos=SeqListFind(&a1, 4);SeqListPushPos(&a1, pos, 6);SeqListPrint(&a1);pos = SeqListFind(&a1, 3);SeqListPopPos(&a1, pos);SeqListPrint(&a1);return 0;
}

演示效果如下

在这里插入图片描述

五 使用pos函数来模拟头增 头删 尾增 尾删

// 演示
SeqListPushPos(&a1, 0, 6);
SeqListPushPos(&a1, size-1, 6);SeqListPopPos(&a1, 0, 6);
SeqListPopPos(&a1, size-1, 6);

以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏

希望大佬们看到错误之后能够不吝赐教 在评论区或者私信指正 博主一定及时修正

那么大家下期再见咯

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

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

相关文章

Red Hat Enterprise Linux release 8.0 (Ootpa)-性能调优工具Tuned

一、Tuned简介Tuned是Red Hat Linux操作系统自带的性能调优工具,通过针对特定应用场景提供配置来改善系统性能,自Red Hat Enterprise Linux/CentOS的6.3版本开始出现,包括两部分tuned和tuned-adm,其中tuned是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供…

SpringBoot二十六课大纲和目录

目录 ​​ 即使是在憎恨和杀戮中&#xff0c;仍然有些东西值得人们为之活下去。一次美丽的相遇&#xff0c;或是为了美丽事物的存在。我们描绘憎恨&#xff0c;是为了描写更重要的东西。我们描绘诅咒&#xff0c;是为了描写解放后的喜悦。 SpringBoot《第一课》_星辰镜的博客…

clickhouse常见部署图及LowCardinality低基数类型优缺点

clickhouse使用jdbc进行查询插入数据操作的部署图 一.读sql的核心是 读分布式表的数据&#xff08;分布式表可以读取互为副本的本地表的数据&#xff0c;起到容灾的目的&#xff09;&#xff0c;然后使用nginx作为负载均衡器和反向代理&#xff0c;代理后端clickhouse的分布式…

什么是低代码

文章目录no code / low code / pro code按适用范围的维度来分类低代码的技术意义与商业价值技术意义商业价值行业状态速读平台分类不同的实现方式不同的使用群体不同的使用方式优秀开源项目推荐no code / low code / pro code no code&#xff1a;自己编程给自己用&#xff0c…

Yao‘s GC 的通信最优解:Half Gate

参考文献&#xff1a; Bellare M, Hoang V T, Rogaway P. Foundations of garbled circuits[C]//Proceedings of the 2012 ACM conference on Computer and communications security. 2012: 784-796.Zahur S, Rosulek M, Evans D. Two halves make a whole[C]//Annual Interna…

MyBatisPlus入门宝典(二)CRUD

目录 一.添加 二.相关注解 三.修改 四.删除 五.查询 六.条件构造器 七.分页查询 八.全局配置 一.添加 1.配置文件开启SQL日志打印 # 开启SQL日志 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 2.测试添加方法&#xff1a; …

Unity URP 色彩之旅

Unity URP 色彩之旅 这一切只是色彩科学的冰山一角… 文章目录Unity URP 色彩之旅1 我们是如何感知世界的&#xff1f;1.1 首先要有光&#xff01;1.2 人眼响应1.3 奇怪的大脑2 我们是如何描述颜色的&#xff1f;2.1 CIE 1931 RGB Color Space2.2 CIE 1931 XYZ Color Space2.3 …

JavaScript高级学习笔记:数据_变量_内存

1. 什么是数据? 2. 什么是内存? 3. 什么是变量? 4. 内存,数据, 变量三者之间的关系 变量保存的是内存中存储的地址值&#xff0c;而变量赋值就是将一个变量保存的内容拷贝一份到另一个变量中 这里面的.就是找obj对应地址值&#xff0c;中内存保存的相应数据 那么是不是所有…

SRv6----报文转发流程

按照下图路径&#xff0c;报文需要从主机H1转发到主机H2,H1将报文发送给节点A处理。节点A、B、D和F均为支持SRv6的设备&#xff0c;节点C和节点E为不支持SRv6的设备。 我们在SRv6源节点A上进行了网络编程&#xff0c;希望报文经过B-C和D-E这两条链路&#xff0c;然后送达节点F&…

华为面向5G的室内覆盖数字化概述

概述 数字化技术催生各行业的不断创新&#xff1a;ICT、媒体、金融、保险在数字化发展 曲线中已经独占鳌头&#xff0c;零售、汽车、油气化工、健康、矿业、农业等也在加速 其进程。促进数字化进程的关键技术包括软件定义设备、大数据、云计算、区 块链、网络安全、时延敏感网…

(附源码)SSM医疗垃圾管理系统JAVA计算机毕业设计项目

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

美团java一面面经

目录1.了解static吗&#xff0c;static数据存在哪&#xff1f;生命周期什么样的2.了解final吗&#xff0c;讲讲下面这段代码的结果3.讲讲volatile吧4.讲讲两个锁的区别(reentrantlock和synchronized)5.讲讲线程池里线程的创建与销毁&#xff0c;核心线程可以销毁吗&#xff1f;…

.NET 开源项目推荐之 直播控制台解决方案 Macro Deck

在直播圈有个很受欢迎的直播控制台程序Macro Deck, 它是基于Apache 2.0协议开源的.NET 应用。流媒体是一个吸引数亿万玩家的严肃行业。 最受欢迎的游戏锦标赛的转播获得了数百万的观看次数,从商业角度来看,这也使游戏行业变得有趣。在直播圈有个很受欢迎的直播控制台程序Mac…

牛客网专项练习30天Pytnon篇第07天

1.在Python中&#xff0c;使用open方法打开文件,语法如下&#xff1a;open(文件名&#xff0c;访问模式)&#xff0c;如果以二进制格式打开一个文件用于追加&#xff0c;则访问模式为:&#xff08;C&#xff09; A.rb B.wb C.ab D.a 解析&#xff1a; "r",&q…

看完这篇 教你玩转渗透测试靶机vulnhub——hackableII

Vulnhub靶机hackableII渗透测试详解Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;FTP匿名登录&#xff1a;③&#xff1a;回弹shell&#xff1a;④&am…

Mybatis - 一二级缓存的原理

Mybatis - 一二级缓存的原理前言一. 一级缓存原理1.1 原理分析1.2 一级缓存 Key1.3 查询逻辑1.4 一级缓存的清除或失效场景1.5 一级缓存总结二. 二级缓存原理2.1 二级缓存的实验2.2 二级缓存的开启和相关配置解析2.3 二级缓存的封装Cache类2.4 二级缓存的存储2.5 二级缓存总结前…

指静脉代码学习---9.图像质量评价(分类)

一、论文背景 1.论文三--Song 本文提出了一种自适应增强框架的算法流程 先通过质量评价将图像分类,①针对高质量的图像,采用类似直方图均衡化的简单方法②低质量图像,采用类似滤波器增强的方法(虽然时效性较差,但是效果比较明显) ①对质量评价方法历程的概述:

Python 变量作用域

Python 变量作用域1.变量作用域2.局部变量3.全局变量4.同名的局部变量和全局变量5.global 语句1.变量作用域 Python 中规定每个变量都有它的作用域&#xff0c; 即变量只有在作用域范围内才是可见可用的。 作用域能避免程序代码中的名称冲突&#xff0c;在一个函数中定义的变量…

Java学习 --- 面向对象-继承

一、为什么需要继承 我们编写了两个类&#xff0c;一个是Pupil类&#xff0c;一个是Graduate类 问题&#xff1a;两个类的属性和方法有很多是相同的&#xff0c;怎么办&#xff1f; Pupil类&#xff1a; package com.javase.extend_;public class Pupil {public String nam…

docker搭建2048小游戏

下载2048游戏包 链接: https://pan.baidu.com/s/1E5RkGgfLSo3XYmvJ7RId_Q 提取码: 1gc5 复制这段内容后打开百度网盘手机App,操作更方便哦 打包成镜像 [root@docker ~]# ls game2048.tar [root@docker ~]# docker load -i game2048.tar [root@docker ~]# docker images REPOSI…