1.2绪论
数据
数据元素 行元素 记录 节点
数据项
数据对象
数据结构
逻辑结构 1线性非线性
2集合 线性 树 图
存储结构 顺序存储
链式存储 指针
索引 index
散列存储
运算和实现
数据类型 值+操作
typedef自己定义类型
约束范围
抽象数据类型ADT
可以用(D对象S关系P操作)表示 P包括 操作名 (参数表)
赋值参数 提供输入值
引用参数以&打头 还可以返回操作结果
初始条件
结果
格式:ADT名{ DSP}ADT名
以上使用类C语言
C语言
1.4算法和算法分析
自然语言
流程图 传统 NS
伪代码:类语言
特性 有穷性
确定性
可行性
输入
输出
设计要求
正确性
可读性
健壮性
高效性
时间效率💕
度量 事后统计
事前分析
(渐进)时间复杂度
第二章 线性表
2.1 线性表定义和特点
linear list
稀疏
基本操作
initlist(&L) 构造一个空表
destroyLIst(&L) 销毁
CLearList (&L)清除
LIstEmpty(L)是否为空
ListLength(L)返回元素个数
GetElem(L,i,&e)用e返回第i个数据值
LocateElem(L,e,compare())
返回第一个与e满足compare()的数据元素的位序
PriorElem(L,cur_e,&pre_e)返回前驱
NextElem(L,cur_e,&mext_e)返回后继
ListInsert(&L,i,e)
在第I个位置插入新的元素e,L+1
ListDelete(&L,i,&e)删除第i个元素
ListTraverse(&l,visited())遍历
顺序存储
连续的存储空间
LOC(aI)=LOC(a1)+(i-1)*L
线性表实现
一维数组
定义 类型名 数组名【常量】
为了可以改变长度
#define LIST_INIT_SIZE 100
typedef struct{
ElemType elem[LIST_ INIT_SIZE];
int length;
}Sqlist;
typedef charElemtype
数组静态分配
动态分配
SqList l;
L。data=(ElemType*)malloc(sizeof(ElemType)*MaxSize);
强制类型转换
内存动态分配需要加载头文件<stdlib.h>
delete p;
顺序表
状态码
按值查找
ASL 平均查找长度
插入
链表 顺序存取
单链表
双链表
循环链表
头指针
首元节点
头节点
单链表的初始化
判断是否为空
单链表销毁
清空链表
求链表表长
取值
按值查找
插入
删除
单链表的建立
头插法
尾插法
循环链表
带尾指针循环链表的合并