【数据结构】顺序表

线性表(/inear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串.

线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

1.概念和结构

概念

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。

结构

顺序表的底层结构是数组,顺序表是用数组来实现的

(顺序表 = 数组+增添数据+删除数据+修改数据+查询数据......)

分类:

静态顺序表和动态顺序表

静态顺序表

使用定长数组存储元素

缺点:空间给少了不够用,给多了造成空间浪费。

动态顺序表

底层数组的空间大小在不断变化

定义
初始化

注意:要使用传址调用

尾插法

在插入新元素时要考虑原数组的空间大小,注意不要跃界。

当空间不足时,就需要增加原数组的空间,此时就需要realloc函数帮助。

那么一次性加多少空间呢?

如果一次性加的过少,那么效率就会下降,加的过多就很容易造成浪费。所以,每次扩容时,使原空间加倍最好(我也不知道为啥,大佬研究的,跟概率学相关)

注意:扩容时最好新建tmp数组,如果直接在原数组扩容容易造成数据丢失。

时间复杂度:O(1);

头插法:

与尾插相似,注意判断空指针,以及检查空间是否不足。不一样的是,需要把每个数据后移一位。

时间复杂度:O(n);

尾删

时间复杂度:O(1);

头删

时间复杂度:O(n);

之间插入

注意判断空指针以及越界问题即可

时间复杂度:O(n);

之间位置删除:

注意判断空指针以及越界问题即可

时间复杂度:O(n);

查找:
销毁:

注意free后要初始化。

相关推荐
Am-Chestnuts几秒前
通义千问任务清单怎么导出Word?用DS随心转保留层级和勾选项
开发语言·c#·word
LuminousCPP1 分钟前
数据结构 - 排序(二):快速排序从错误初版到优化版|双指针划分 + 三数取中 + 小区间插入优化
c语言·数据结构·笔记·算法·排序算法
smartpi_ai2 分钟前
自学习“放着不动“会自动退出吗?超时退出缺席的交互兜底、退出条件挂串口的状态联动设计
学习·microsoft·交互
苦猿的大模型日记4 分钟前
Day58|从0学习 Claude Code(八):对话越聊越长,我给它装了个自动碎纸机
学习
山甫aa7 分钟前
【从零开始的 Web 后端学习】令牌技术一篇搞定(JWT 登录认证保姆级)
后端·学习·spring·web·jwt
hansang_IR10 分钟前
【题解】P9753 [CSP-S 2023] 消消乐
数据结构·c++·算法
liliangcsdn12 分钟前
基于信号强度的稀疏选股算法的探索分析
开发语言·python
竞赛考级题库15 分钟前
202606 青少年等级考试C/C++真题一级 建议答题时长:60min
java·c语言·c++
4SAPI17 分钟前
2026年大模型API接入选型指南:企业与个人用户的架构、稳定性与成本考量
大数据·开发语言·数据库·人工智能·架构·php
迷茫、Peanut20 分钟前
C语言混合链接
c语言