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.算法和算法分析

正确性:一般指对于精心挑选的典型、苛刻而带有刁难性的几组输入得到满足要求的结果
可读性:
鲁棒性:输入非法时,也能返回一个表示错误的值,而不是异常;以便在更高抽象层次处理
复杂度:时间复杂度-基本操作执行次数
空间复杂度-操作输入数据和实现算法的额外空间

posted @ 2025-03-20 19:45  钱塘江畔  阅读(33)  评论(0)    收藏  举报