文章目录
1.线性表
1.1概念
线性表(linear list)是n个具有相同特性的数据元素的有限序列。
常见的线性表:顺序表、链表、栈、队列、字符串等。
1.2特征
逻辑上:是线性结构,即连续的一条直线。
物理上:并不一定是连续的。
ps:线性表在物理上存储时,通常以数组(顺序存储结构)和链式存储结构的形式存储。
2.顺序表
2.1概念
顺序表是线性表的一种,其数据元素 在逻辑上相邻,在物理地址存储单元上连续依次存储的线性结构。
一般情况下采用数组存储。分为 静态顺序表 和 动态顺序表。
2.2顺序表优缺点
1.优点:
数组或动态增长的数组,常用数组或指针来实现。
2.缺点:
(1)头部或中间插入删除数据,效率较低,要挪动数据,时间复杂度O(n)。
(2)扩容:效率的影响,而且会存在一定程序空间的浪费。
3.静态顺序表
3.1概念
使用定长数组存储数据元素。
(1)静态顺序表只适用于知道需要存多少数据的场景。
(2)静态顺序表的定长数组大小MAXSIZE开大了,浪费空间,开少了,不够用。(本篇blog重点讲述动态顺序表)
3.2存储结构
#define ElemType int
#define MAXSIZE 10
typedef struct
{
ElemType elem[MAXSIZE];
int last;//last记录最后一个元素的下标,若为空表则last为-1
}SeqList;
3.3源代码(自取)
3.4相关函数接口
void SeqListInit(SeqList *L);//初始化
void Push_Back(SeqList *L, ElemType x);//尾插
void Push_Front(SeqList *