顺序表(线性表的顺序存储)(物理结构和逻辑结构均是连续的)(类似于封装数组)
特点:
1、可动态增长的数组
2、数据在数组中的存储是连续的
缺点:
中间插入或删除的效率较慢,需挪动数据,时间复杂度是O(N)。
空加不够增容会造成一定程度的空间浪费。
优点:
可以随机访问!!利好排序查找等操作。
缓存利用率较高!
基本结构:
typedef struct SeqList
{
SLDataType *a;
int size;//有效数据的个数
int capicity;//容量空间大小(不够可以扩容——动态)
}SL, SeqList;
注:(这里的SLDataType是宏定义类型,由于顺序表中可能存储不同类型的数据,同时也方便维护,故采用宏定义的类型来定义)
编程思想:
1、主要方法
顺序表类似于数组,所以我们可以借助数组并加以可动态扩容的行为来完成顺序表的构建,所以可以利用C语言自带的动态分配空间来实现动态扩容。
2、初始化
顺序表是一种特殊的数据类型,根据定义我们不难发现它包括一个数组、数据的个数、当前的容量这三个基本特征,所以需要利用结构体进行说明。代码如下:
typedef struct SeqList
{
SLDataType *a;