定义
用顺序存储方式实现线性表
线性表具有相同数据类型n>=0个数据元素的有限序列==>每个数据元素所占空间一样大
LOC(L) LOC(L)+数据元素大小 LOC(L)+2*sizeof(ElemType)
顺序表特点
- 随机访问:O(1)时间内找到第i个元素
- 存储密度高,每个节点只存储数据元素本身,不能存放指针(链式存储可以)
- 拓展容量不方便(动态分配也可以,但时间复杂度会较高)
- 插入、删除操作不方便,需要移动大量元素
C语言求一个数据元素大小:sizeof(ElemType) sizeof(int) = 4B
实现
静态分配
宏定义MaxSize,最大程度,静态“数组”存放数据元素
#define MaxSize 15; //定义最大长度
ElemType data[MaxSize];//静态存放数据元素
无法更改,浪费
动态分配
#define InitSize 10 //顺序表初始长度
typedef struct{
ElemType *data; //指示动态分配数组的指针
int MaxSize ; //顺序表最大容量
int length; //当前长度
} SeqList; //类型定义--动态分配方式
C语言
- malloc函数 动态申请一整片空间
- malloc函数返回一个指针,需要强制转型为定义的指针
- 函数的参数指明要分配连续内存空间
- L.data = (ElemType*) malloc (sizeof(ElemType) *InitSize);
- free函数 释放原来内存空间
PS:realloc函数也可malloc + free函数
C++: new delete关键字
回顾: