线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
线性表的顺序存储结构代码
#define MAXSIZE 20 /*存储空间初始分配量*/
typeded int ElemType ; /*ElemType类型根据实际情况而定,这里假设为int */
typedef struct
{
ElemType data[MAXSIZE]; /*数组存储数据元素,最大值为MAXSIZE*/
int length; /*线性表当前长度*/
}SqList;
这里,我们就发现描述顺序存储结构需要三个属性:
存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置
线性表的最大存储容量:数组长度MaxSiz。
线性表的当前长度:length。
数据长度与线性表长度的区别
数组的长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。
在任意时刻,线性表的长度应该都小于等于数组的长度。
线性表顺序存储结构的优缺点
优点:无须为表示表中元素之间的逻辑关系而增加额外的存储空间,可以快速的存取表中任一位置的元素
缺点:插入和删除操作需要移动大量元素,当线性表长度变化较大时,难以确定存储空间的容量,造成存储空间的碎片
/*线性表的单链表存储结构*/
typedef struct Node
{
ElemType data;
struct Node *next;
}Node;
typedef struct Node *LinkList; /* 定义LinkList */
结点由存放数据元素的数据域和存放后继结点地址的指针域组成。