ADT
抽象数据结构
{
数据对象
数据关系;二元组
基本操作
}
数据对象定义
区分define与typedef
define是定义符号常量,例define a 100
typedef是定义变量
例typedef struct a{int x,y;} b,*p;
此处p是结构体a类型指针,还有结尾要加分号
数据关系
分为集合 数据元素属于同一个集合,
线性 数据元素一对一
树状 数据元素一对多
网状 数据元素多对多
基本操作
定义
返回类型 操作名 参数列表
初始条件
操作结果
算法
有穷性,确定性,可行性,输入,输出
抽象数据结构
{
数据对象
数据关系;二元组
基本操作
}
数据对象定义
区分define与typedef
define是定义符号常量,例define a 100
typedef是定义变量
例typedef struct a{int x,y;} b,*p;
此处p是结构体a类型指针,还有结尾要加分号
数据关系
分为集合 数据元素属于同一个集合,
线性 数据元素一对一
树状 数据元素一对多
网状 数据元素多对多
基本操作
定义
返回类型 操作名 参数列表
初始条件
操作结果
算法
有穷性,确定性,可行性,输入,输出
要考虑时间复杂度与空间复杂度
线性表主要操作
创建空的线性表 InitList
初始化 ClearList
销毁 DestroyList
返回L中数据元素个数 ListLength
获取某个元素的值 GetList
返回L中第一个满足关系函数的位序 LocateList
插入 ListInsert
删除 ListDelete
遍历 ListTraverse
线性表的顺序表示指的是用一组地址连续的存储单元一次存储线性表的数据元素
线性表的链式存储是用一组任意的存储单元存储线性表的元素,每一个结点要存储数据和后继的地址
头结点-首元节点(头指针)
尾结点的指针域为NULL
循环链表就是把单链表的尾结点的指针域改为头结点的地址
双向链表是每个节点要存储前驱和后继的地址