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

数据结构 ------ 1:顺序表

一,数据结构的初步了解

什么是数据结构?

举个例子,学校里在举办运动会,操场上聚集了很多学生,这些学生各自参加运动项目,这时候要在操场上找一个学生,无异于大海捞针。运动会结束,学生回到各自的班级,这时候再去找一个学生,就可以根据这个学生的年级和班级去找,很方便。

运动会时操场上的学生就是杂乱的数据,而运动会结束后,教室里的学生就是结构化的数据。

数据结构就是计算机科学中用于组织、管理和存储数据的一种方式。

总结一下,

1)能够储存数据

2)能够管理数据(增删查改等等)

二,顺序表

1.线性表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。 案例:蔬菜分为绿叶类、⽠类、菌菇类。线性表指的是具有部分相同特性的⼀类数据结构的集合 如何理解逻辑结构和物理结构?

2.顺序表分类

1.顺序表的底层结构是数组,但比数组多了增删查改的功能

因为底层结构数组,所以线性表在物理结构上也是来连续的。

2.顺序表分类

静态顺序表:

创建一个结构体,里面设置定长数组,即为静态顺序表,静态顺序表的大小不可修改,不够灵活。

缺陷:空间给少了不够⽤,给多了造成空间浪费

动态顺序表:

创建一个结构体,里面创建指针来指向数组,当前数据个数和总的数据容量。动态顺序表可以根据需求用malloc等的函数去向内存申请空间,更加灵活方便,且节省空间。

三.动态顺序表的实现

首先创建三个文件,SeqList.h文件用来声明函数,SeqList.c文件用来实现函数,test.c文件用来测试。

1.创建动态顺序表

在SeqList.h里面创建动态顺序表

用SLDataType定义数据类型,方便后续改变。

2.初始化

在SeqList.h声明初始化函数

并在SeqList.c中实现函数

3.销毁

4.扩容

进行增删查改时,首先要进行空间大小判断,如果空间不够用了,要先申请空间。

经过计算,空间都是按照原先空间的2到3倍进行扩充的,初始空间也可能是0,所以要先判断初始空间,然后再申请空间,申请空间时我用了temp临时变量,如果直接用ps->arr来接收申请到的新空间,申请不成功时,就会把ps->arr置为空,原来的数据也就找不到了。

5.打印顺序表

没什么好说的,直接打印就行,注意不要穿指针,避免顺序表被修改

6.尾插

尾插就是在顺序表的末尾插入数据,也就是在下标为size处加一个数据

首先判断传来的指针是否为空,再判断数组大小,然后在size处插入数据,接着size+1。

测试一下

尾插成功

7.头插

头插就是在顺序表开头插入数据,将原来的数据向后挪,在0位置处写入数据

测试一下

测试成功

8. 尾删

尾删即在尾部删除一个数据,size-1,尾部的数据不会影响顺序表原有内容的增删查改

因而尾部的数据不用管,直接将size-1即可

测试一下

成功

9.头删

头删即在顺序表开头删除一个数据,将数据往前移动一位即可完成头删,size-1.

测试一下

成功

10. 在指定位置之前插入数据

在指定位置之前插入数据,需要知道插入的位置,并且要把该位置以及后面的数据向后移动一位,再把数据填入到原位置上。

测试一下

成功

11.在指定位置删除数据

在指定位置删除数据,只需要把其后面的位置向前移动一位即可。

测试一下

成功

12.查找数据

查找数据需要拿数据一一作对比,找到了就返回下标,没找到就返回没找到。

测试一下

成功。

http://www.jsqmd.com/news/579971/

相关文章:

  • intv_ai_mk11GPU部署教程:CSDN云GPU实例上intv_ai_mk11服务的启动与持久化配置
  • Kandinsky-5.0-I2V-Lite-5s快速上手:Web界面零配置生成短视频(附提示词模板)
  • 论文答辩智能化:10款AI辅助工具推荐(附爱毕业aibiye使用技巧)
  • 基于西门子 PLC 的糖果包装生产系统设计:从博图编程到触摸屏组态仿真
  • 特色古籍数字化项目标书制作全攻略
  • javaweb基于建筑物识别的无人驾驶车辆路径规划系统
  • DownKyi终极指南:三分钟掌握B站视频下载的完整解决方案
  • OpenClaw权限控制:千问3.5-9B任务执行的安全边界设置
  • Z-Image-GGUF效果复现:相同seed下3台不同4090D生成一致性测试
  • OpenClaw成本控制:Qwen2.5-VL-7B图文任务Token消耗优化
  • Wan2.2-I2V-A14B模型轻量化:针对移动端的部署与推理加速方案
  • 蔬菜清洗机的设计(论文+CAD图纸+答辩稿) 滚筒式蔬菜清洗机设计
  • Qwen3-ASR-0.6B多场景部署:WebUI前端+API后端+日志监控全栈实践
  • DeepSeek-R1-Distill-Qwen-1.5B在RK3588板卡上的部署实战:16秒完成1k token推理
  • 论文公式排版
  • 兔绘屋 v1.0.1-刚出的免费追漫神器!无广告加载飞快,追更体验真的舒服
  • WPS JS宏编程教程学习笔记目录
  • PyTorch镜像升级指南:从单卡到多卡分布式训练,性能提升秘籍
  • intv_ai_mk11开源镜像深度解析:为何选择Llama架构+7B规模+Q4量化黄金组合
  • 2026年评价高的陕西植提设备分离设备/陕西植提设备提取罐销售厂家哪家好 - 行业平台推荐
  • 云酷科技有限空间智能监测设备·全景问答手册
  • RWKV7-1.5B-G1A网络协议分析助手:模拟抓包与协议流程图生成
  • 0330作业登记3
  • 如何将文件从安卓设备传输到Mac:5种行之有效的解决方案
  • RVC模型创意作品:用AI“复活”经典影视对白并赋予新音色
  • Kandinsky-5.0-I2V-Lite-5s详细步骤:supervisor自启服务+Web端全流程实操
  • 2026年售后有保障的产后塑身衣/强力塑身衣值得信赖的生产厂家 - 行业平台推荐
  • 从Eclipse转IntelliJ IDEA的老司机踩坑记:20个必改设置让你的迁移过程更顺滑
  • HeyGem数字人视频生成系统:WebUI界面操作,新手快速入门指南
  • 2026年比较好的HPL防火板/防火板实力工厂怎么选 - 行业平台推荐