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 平均查找长度
插入
链表 顺序存取
单链表
双链表
循环链表
头指针
首元节点
头节点
单链表的初始化
判断是否为空
单链表销毁
清空链表
求链表表长
取值
按值查找
插入
删除
单链表的建立
头插法
尾插法
循环链表
带尾指针循环链表的合并
双向链表
双向链表插入
双向链表删除
线性表应用
有序表 合并
线性表