从零开始学数据结构系列之第一章《线性表与顺序表》

一些杂谈

作者是从B站中跟着TyrantLucifer 大佬进行学习的,并结合自身学习制作相关笔记的,建议真的去看,讲的真的十分的好

大佬教程的传送门:

b站:UP从0到1带你手撕数据结构全集(C语言版)

博客:Data Structure

再次建议大家去看,真的十分的好

文章目录


线性表

概念:

零个或多个数据元素的有限序列

​   线性表的数据集合为{a1,a2,...,an},假设每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且只有一个直接前驱 元素,除了最后一个元素an外,每一个元素有且只有一个直接后继 元素。数据元素之间的关系是一对一的关系。

前驱:

​   如 a1 是 a2的前驱,a2 是 a3的前驱

后继

​   如 a2 是 a1的后继,a3 是 a2的后继

线性表的特点

  • 有限的序列
  • 序列中的每一个元素都有唯一的前驱和后继,除了开头和结尾两个节点

线性表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列等,线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构(存储结构)上并不一定是连续的,线性表在物理上存储时,通常以顺序表和链式结构的形式存储。

线性表的顺序存储--->顺序表

是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

线性表的链式存储

线性表中的数据结点在内存中的位置是任意的,即逻辑上相邻的数据元素在物理位置(内存存储的位置)上不一定相邻。

顺序表

概念:

​   用一组地址连续的存储单元依次存储线性表的数据元素,这种存储结构的线性表称为顺序表。

特点:

​   逻辑上相邻的数据元素,物理次序也是相邻的。

​   只要确定好了存储线性表的起始位置,线性表中任一数据元素都可以随机存取,所以线性表的顺序存储结构是一种随机存取的储存结构 ,因为高级语言中的数组类型也是有随机存取的特性,所以通常我们都使用数组来描述数据结构中的顺序储存结构,用动态分配的一维数组表示线性表。

顺序表的优缺点

优点:

​   1.无须为表中元素之间的逻辑关系而增加额外的存储空间;可以快速的存取表中任一位置的元素。

​   2.存储密度为1最高,因为没有指针域空间利用率高

​   3.随机存取,按位置访问元素的时间复杂度为O(1),直接根据数组下标访问元素

缺点:

​   1.插入和删除操作需要移动大量元素;当线性表长度较大时,难以确定存储空间的容量;造成存储空间的"碎片"。

​   2.动态顺序表增容会付出一定性能消耗,其次可能还是会存在一定的空间浪费(不可能扩容的刚刚好)

​ 在头部或者中部左右的插入删除,需要移动元素,时间复杂度为O(N),效率低。

相关推荐
go5463158465几秒前
修改Spatial-MLLM项目,使其专注于无人机航拍视频的空间理解
人工智能·算法·机器学习·架构·音视频·无人机
油泼辣子多加18 分钟前
【Torch】nn.BatchNorm1d算法详解
算法
阿里云云原生18 分钟前
Spring AI Alibaba 游乐场开放!一站式体验AI 应用开发全流程
开源
nlog3n18 分钟前
基于 govaluate 的监控系统中,如何设计灵活可扩展的自定义表达式函数体系
算法·go
IT古董30 分钟前
【第三章:神经网络原理详解与Pytorch入门】01.神经网络算法理论详解与实践-(2)神经网络整体结构
pytorch·神经网络·算法
NocoBase32 分钟前
为什么越来越多 Airtable 用户开始尝试 NocoBase?
低代码·开源·资讯
ThetaarSofVenice44 分钟前
垃圾收集相关算法Test
java·jvm·算法
算家计算1 小时前
4 位量化 + FP8 混合精度:ERNIE-4.5-0.3B-Paddle本地部署,重新定义端侧推理效率
人工智能·开源
小陈phd1 小时前
langchain从入门到精通(二十八)——RAG优化策略(六)集成多种检索器算法实现混合检索及问题转换总结
算法
是小王同学啊~1 小时前
(LangChain)RAG系统链路向量检索器之Retrievers(五)
python·算法·langchain