绪论
总所周知,研究数据结构有三个最主要的内容,无论哪一种数据结构都是在研究结构的逻辑结构,物理结构(存储结构)和数据运算三个主要内容。
在严蔚敏版数据结构中,第一个被提及的数据结构是线性表。
线性表顾名思义,就是数据结构呈现一个线性结构,除了第一个元素外,其他每一个元素都有前驱结点,除最后一个元素以外,每一个元素都有后继结点。
所有的数据结构最主要的都是操作数据的运算,而运算包括了创(创建)销(销毁)增(增加)删(删除)改(修改)查(查找)。
线性表的组成
定义线性表一般有两种方法,一种是定义静态线性表,另一种是定义动态线性表。
定义静态线性表的优点有代码简单,不用担心内存泄漏问题,另外在插入或者删除数据的时候更加简单操作
缺点也很明显,占用内存空间固定,无法扩展,因此需要在程序运行前,需要提前定义好数据所需空间不易变动
具体定义代码如下
#define MaxSize 50 // 定义静态线性表 最大大小
typedef struct{
// ElemType data[MaxSize];定义所需要的数据类型
int data[MaxSize];
int length;
}SqList;
void InitList(SqList &L){
for(int i = 0;i<MaxSize;i++){
L.data[i] = 0;
}
L.length = 0;
}
定义动态线性表优点有可以动态定义数据空间大小,便于运行时改变数据所占空间
缺点就是插入数据和删除数据时会更麻烦
具体定义代码如下:
typedef struct
{
int * data;
int MaxSize;
int length;
}SqList;
void InitList(SqList &L){
L.data = (int *)malloc(InitSize*sizeof(int));
int length = 0;
L.MaxSize = InitSize;
}