一. 线性表是具有相同特性数据元素的有限序列。
二. 线性表的顺序表示和实现:
线性表的顺序表示指的是用一组地址连续的存储单元一次存储线性表的数据元素。换句话说,以元素在计算机内”物理位置相邻“来表示线性表中数据元素之间的逻辑关系。每一个数据元素的储存位置都和线性表的起始位置相差了一个和数据元素在线性表中的位序成正比的常数。
- 顺序表的优点:查找数据比较灵活,时间复杂度仅为O(1)。
- 顺序表的缺点:对顺序表进行添加、删除元素操作比较麻烦,需要移动大量的元素,对于有n个元素的顺序表,插入和删除元素的平均时间复杂度为O((n-1)/2)。
-
定义
#define ListInitSize 5 //线性表分配的初始容量 typedef struct{ int *elem; //储存空间基地址 int length; //当前长度 int ListSize; //当前分配的容量 }List;
我们用一个结构体来存储线性表,顺序线性表的结构体里面包括存储空间基地址、线性表当前的长度以及当前分配的容量。
-
创建线性表
int ListCreat(List *L){ //构造一个空的线性表 L->elem = (int *)malloc(ListInitSize*sizeof(int)); if(!L->elem) exit(-1); //存储分配失败 L->length = 0; //当前长度为0 L->ListSize =