定义和概念
定义
概念
直接前驱元素
直接后继元素
线性表的长度
空表
位序
元素在线性表中的位置,例如Ai是线性表中的第i个元素,i是A元素的位序
线性表的抽象数据类型
线性表的定义
除a1外其他元素都有且只有一个直接前驱元素,除an外都有一个后继元素,元素与元素是一一对应的关系。
定义方法一:固态定义
通过编译器提前定义好数组、链表等,个数有限,且不能在使用过程中增加
#define MAXLIST 100
void initList(){
int list[MAXLIST];//长度为100的数组
}
定义方法二:动态定义
通过动态内存分配的方法来分配空间,例如链表和栈
#include <malloc.h>
void initList(){
int *p = NULL;
p = (int*)malloc(sizeof(int) * 100);//100个int大小的内存空间
}
定义方法三:混合定义
通过固态定义长度、动态定义大小的方法或是反过来来定义特殊情况下需要的线性表
#include<malloc.h>
#define MAXLIST 100
void initList(){
int *parr[100];
for(int i = 0;i < 100; i++){
parr[i]=(int *)malloc(sizeof(int)*100);
}
}//定义一百个指针数组,每个指针数组都存储着大小为100的动态内存空间
//不支持指针的语言传引用
线性表的基本操作
初始化操作
参数列表
判断空操作
参数列表
清空表操作
参数列表
删除表操作
参数列表
遍历表操作
参数列表
返回个数操作
参数列表
- 传入表头
-
返回值
接收个数
-
实现方式
如果有计数则通过计数判断,没有则通过标记头元素的地址,然后计算第一个元素的大小,开始遍历直至地址重合。或是直接计算空间大小除以子空间大小。
获取元素操作
参数列表
表地址
- 元素位置
-
返回值
是否成功获取
- 获取的值
-
实现方式
查找判断操作
参数列表
接收查找元素或指针
-
返回值
返回是否存在
- 返回是否成功
实现方式
通过遍历判断是否存在,如果存在多个则返回假,或传回包含多个元素的地址指针数组