什么是线性表?
线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列
1.线性表(逻辑结构)的存储结构分为顺序表和链表
- 线性表是具有相同类型的n个数据元素的有穷集合--是一种逻辑结构
- 线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,二者属于不同的层面概念
- 线性表(逻辑结构)对应的存储结构分别为顺序表、链表
2.线性表的特点
- 表中的元素的个数有限(有限性)
- 表中的元素都有先后顺序(有序性)
- 表中的元素都相同的存储空间,因为表中的袁术数据类型都相同
线性表的顺序存储结构
顺序表,用一组物理地址连续的存储单元依次存储线性表中的数据元素,从而使逻辑上相邻的元素物理位置也相邻。表中的逻辑位置与物理位置相同(线性表位序从1开始,数组下表从0开始)
顺序存储两种描述方式:
1.静态分配方式
#define Maxsize 10 typedef struct{ ElemType data[MaxSize]; int length; }SqList;
静态分配时,数组的大小已经固定,一旦空间占满,再插入新数据就会溢出。
2.动态分配方式
#define IniSize 100 //初始定义表长度 typedef struct{ ElemType *data; //动态分配数组的指针 int MaxSize,length;//数组最大容量和当前个数 }SqList;
动态分配时候,存储数组的大小固定,满了之后可申请更大的存储空间从而替换以前的存储空间,把以前的数据放入再继续输入新的数据,以起到扩充的作用
- C的初始动态分配语句:L.data = (ElemType*)malloc(sizeof(ElemType)* InitSize);
- C++的初始动态分配语句:L.data = new ElemType(InitSize);
- PS:动态分配不是链式存储,它同样属于顺序存储结构,物理结构没有变化,依然是随机存取方式,只是分配时的大小可以在运行时决定。
今天先记录到这,清明之后做完