2022112301 - 数据结构笔记
0.基本概念
逻辑结构
算法的设计取决于数据(逻辑)结构
- 集合-同属于一个集合
- 线性结构-一对一关系
- 树形结构-一对多关系
- 图状结构-多对多关系
物理结构(存储结构)
算法的实现依赖于存储结构
- 顺序映像-顺序存储结构
- 非顺序映像-链式存储结构
1.查询笔记本字长是多少
在cmd窗口中输入systeminfo回车,显示出系统详细信息,其中观察系统类型一项,标明是x86 based pc,说明是32位,否则是64位。
2.抽象数据类型
抽象数据类型
可用三元组 (D, S, P) 表示,其中D是数据对象,S是D上的关系集,P是对D的基本操作集。
ADT 抽象数据类型 {
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}
基本操作名 (参数表)
初始条件:<初始条件描述>
操作结果:<操作结果描述>
三元组的定义
ADT Triplet {
数据对象: D = {e1, e2, e3 | e1,e2,e3∈ElemSet(定义了关系运算的某个集合) }
数据关系: R1 = {<e1, e2>, <e2, e3> }
基本操作:
InitTriplet(&T, v1, v2, v3)
操作结果:构造了三元组T,元素e1, e2, e3分别被赋以参数v1, v2, v3的值
DestroyTriplet(&T)。
操作结果:三元组T被销毁。
Get(T, i, &e)
初始条件:三元组T已存在,1≤i≤3。
操作结果:用e返回T的第i元的值。
Put(&T, i, e)
初始条件:三元组T已存在,1≤i≤3。
操作结果:改变T的第i元的值为e。
IsAscending(T)
初始条件:三元组T已存在。
操作结果:如果T的3个元素按升序排列,则返回1,否则返回0。
IsDescending(T)
初始条件:三元组T已存在。
操作结果:如果T的3个元素按降序排列,则返回1,否则返回0。
Max(T, &e)
初始条件:三元组T已存在。
操作结果:用e返回T的三个元素中的最大值。
Min(T, &e)
初始条件:三元组T已存在。
操作结果:用e返回T的三个元素中的最小值。
} ADT Triplet
抽象数据类型Triplet的表示和实现
Status InitTriplet (Triplet &T, ElemType v1, ElemType v2, ElemType v3) {
// 构造三元组T, e1,e2,e3分别被赋值为v1,v2,v3
T = (ElemType *) malloc (3 * sizeof(ElemType));
if(!T) exit(OVERFLOW);
T[0] = v1; T[1] = v2; T[2] = v3;
return OK;
} // InitTriplet
Status DestroyTriplet (Triplet &T) {
// 销毁三元组T
free(T); T = NULL;
return OK;
} // DestroyTriplet
Status Get (Triplet T, int i, ElemType &e) {
// 1 ≤ i ≤ 3, 用e返回T的第i元的值
if (i < 1 || i > 3) return ERROR;
e = T[i - 1];
return OK;
} // Get
Status Put (Triplet &T, int i, ElemType e) {
// 1 ≤ i ≤ 3, 置T的第i元的值为e
if (i < 1 || i > 3) return ERROR;
T[i - 1] = e;
return OK;
} // Put
Status IsAscending (Triplet T) {
// 如果T的三个元素按升序排列,则返回1,否则返回0
return (T[0] <= T[1]) && (T[1] <= T[2]);
} // IsAscending
Status IsDescending (Triplet T) {
// 如果T的三个元素按降序排列,则返回1,否则返回0
return (T[0] >= T[1]) && (T[1] >= T[2]);
} // IsDescending
Status Max (Triplet T, ElemType &e) {
// 用e返回T中三个元素的最大值
ElemType e = (T[0] >= T[1]) ? (T[0] >= T[2] ? T[0] : T[2])
: (T[1] >= T[2] ? T[1] : T[2]);
return OK;
} // Max
Status Min (Triplet T, ElemType &e) {
// 用e返回T中三个元素的最小值
ElemType e = (T[0] <= T[1]) ? (T[0] <= T[2] ? T[0] : T[1])
: (T[1] <= T[2] ? T[1] : T[2]);
} // Min
3.算法和算法分析
正确性:一般指对于精心挑选的典型、苛刻而带有刁难性的几组输入得到满足要求的结果
可读性:
鲁棒性:输入非法时,也能返回一个表示错误的值,而不是异常;以便在更高抽象层次处理
复杂度:时间复杂度-基本操作执行次数
空间复杂度-操作输入数据和实现算法的额外空间

浙公网安备 33010602011771号