Bootstrap

数据结构和顺序表

什么是数据结构

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

数据元素的三要素

数据结构包括三方面的内容:逻辑结构存储结构数据的运算

逻辑结构

逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。数据的逻辑结构分为线性结构和非线性结构,例如:线性表线性结构集合非线性结构

存储结构

存储结构是指数据结构在计算机中的表示,分为顺序存储链式存储索引存储数列存储

顺序存储

逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
优点:可以实现随机存储
缺点:只能使用相邻的一整块存储单元。

链式存储

不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。
优点:不会出现碎片现象,能充分利用所有存储单元。
缺点:只能实现顺序存储

索引存储

在存储元素信息的同时,还建立附加的索引表
优点:检索速度快
缺点:附加的索引表额外占用存储空间,增加和删除数据也需要修改索引表,会花费较多时间

数列存储

根据元素的关键字直接计算出该元素的存储地址
优点:检索、增加和删除结点的操作都很快
缺点:若散列函数不好,则可能出现元素存储单元的冲突,解决冲突会增加时间和空间开销

数据的运算

施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能运算的实现是针对存储结构的,指出运算的具体操作步骤

顺序表

线性表的定义

线性表是具有相同数据类型n(n>=0)个数据元素有限序列
其中唯一的第一个数据元素称为表头元素唯一的最后一个元素称为表尾元素,除第一个元素外,每个元素有且仅有一个直接前驱,除最后一个元素外,每个元素有且仅有一个直接后继。

顺序表分类

  • 静态顺序表
typedef int SLDateType;
#define Maxsize 50
typedef struct SeqList
{
	SLDateType data[Maxsize];
	int size;
}SL;

静态顺序表缺点:开辟的空间大小无法改变,空间太小不够使用,空间太大会造成浪费。

  • 动态顺序表
typedef int SLDateType;
typedef struct SeqList
{
	SLDateType* a;
	int size;       
	int capacity;  
};
;