线性表基本概念
线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”。
将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(简称线性表)。
线性表存储结构可细分为顺序存储结构和链式存储结构。
将数据依次存储在连续的整块物理空间中,这种存储结构称为顺序存储结构(简称顺序表);见图左
数据分散的存储在物理空间中,通过一根线保存着它们之间的逻辑关系,这种存储结构称为链式存储结构(简称链表);见图右
前驱和后继
另外,对于具有“一对一”逻辑关系的数据,我们一直在用“某一元素的左侧(前边)或右侧(后边)”这样不专业的词,其实线性表中有更准确的术语:
某一元素的左侧相邻元素称为“直接前驱”,位于此元素左侧的所有元素都统称为“前驱元素”;
某一元素的右侧相邻元素称为“直接后继”,位于此元素右侧的所有元素都统称为“后继元素”;
顺序表的初始化
使用顺序表存储数据之前,除了要申请足够大小的物理空间之外,为了方便后期使用表中的数据,顺序表还需要实时记录以下 2 项数据:
1.顺序表申请的存储容量
2.顺序表的长度 也就是存储表中数据元素的个数
正常状态下,顺序表申请的存储容量要大于顺序表的长度。
typedef struct Table{
int * head;//声明了一个名为head的长度不确定的数组 也叫“动态数组”
int length;//记录当时顺序表的长度
int size;//记录顺序表的存储容量
}table;
注意,head 是我们声明的一个未初始化的动态数组,不要只把它看做是普通的指针。
接下来开始学习顺序表的初始化
1.给head动态数据申请足够大小的物理空间
2.给size和length赋初值
#def