线性表的类型定义
线性表的定义(图示):
线性结构的特点:
- 只有唯一的一个数据元素可以被称为“首元素”
- 只有唯一的一个数据元素可以被称为“尾元素”
- 除了首元素之外,集合中的每个元素都只有一个直接前驱
- 除了尾元素之外,集合中的每个元素都只有一个直接后继
数组的特点:
- 地址是连续的
- 有一定的顺序
- 可以存放相同类型的数据
因此可以用数组来实现线性表,线性表中把这种用内部已经一定顺序的结构称作线性表的顺序存储,通称“顺序表”
//引入相应的库
#include <stdio.h>
#include <stdio.h>
//定义两个常量
#define LIST_INIT_SIZE 10 /* 线性表存储空间的初始分配量 */
#define LISTINCREMENT 2 /* 线性表存储空间的分配增量 */
#define TRUE 1 //代表真
#define FALSE 0 //代表假
//这场定义的是用于表示状态的类型
typedef int Status;
//这里将int型的数据作为线性的数据元素,可以根据需要自行更换数据类型
typedef int ElemType;
typedef struct {
ElemType *elem; //数据元素
int length; //当前线性表的长度
int size; //当前线性表的最大容量
}SqList;
基本操作:初始化一个线性表
- 操作结果:构造一个空的线性表L
- 这里使用的C语言的mallo方法去动态构建初始容量为10(LIST_INIT_SIZE )的数组。
Status InitSqList(SqList *L){
//这里用的是动态创建数组的方式
L->elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem){
exit(OVERFLOW); //存储分配失败
}
L->length = 0 ;//初始化的时候将线性表的长度设为 0
L->size =10 ; //初始化的时候将线性表的容量设为 10
return TRUE;
}
基本操作:销毁一个线性表
- 初始条件:顺序线性表L已存在
- 操作结果:销毁顺序线性表L
Status DestroyList(SqList *L){
free(L->elem);
L->elem = NULL;
L->length =0