数据结构学习笔记说明
基本说明
- 核心书目为《数据结构 C语言实现》 第二版 严蔚敏等著 和 《数据结构算法解析》 高一凡著
- 源代码为C/C++实现
- 如果对C/C++不了解,可以看郝斌的C语言自学教程
- b站链接:https://www.bilibili.com/video/BV1os411h77o?from=search&seid=4719339752061130383
- 如果对数据结构为第一次接触,建议观看郝斌的数据结构入门
- b站链接:https://www.bilibili.com/video/BV1os411h77o?from=search&seid=4719339752061130383
规范说明
- 《数据结构 C语言实现》 第二版 严蔚敏等著 简称为严书
- 《数据结构算法解析》 高一凡著 简称为高书
- 文章会对应指出出处,方便读者查阅
- 对于博主本人的注释和见解,会加入格式为// S:的注释
源文件名称规范:(见高书P1)
- 数据存储结构。文件名第一个字母为c,以h为拓展名,如c1-1.h是第一章的第一种存储结构。
- 每种存储结构的一组基本操作函数。以bo(bo表示基本操作)开头,h为拓展名,如bo1-1.h是第一章第一种存储结构的一组基本操作函数。严书中设计基本操作的算法也收到基本操作函数中,且在函数中注明算法的编号。
- 调用基本操作的主程序。以main(main表示主程序)开头,cpp为拓展名,如main1-1.cpp是调用bo1-1.h的主程序。
- 实现算法的程序。以algo(algo表示算法)开头,以cpp为拓展名,如algo2-1.cpp是实现算法2.7的程序
- 不属于基本操作又被多次调用的而函数或程序段。以func开头,h为拓展名,如func2-2.h中的函数equal(),comp(),print()等被许多程序调用。为节约篇幅,将这些函数放到func2-2.h中。
- 数据文件。以txt为拓展名,如第七章中的f7-1.txt等
伪算法规范说明(严书P8,9)
- 预定义常量及类型:
// 函数结果状态代码
#define OK 1
#define ERROR 0
#define OVERFLOW -2
// Status是函数返回值类型,其值是函数结果状态代码
typedef int Status; - 数据结构的表示(存储结构)用类型定义(typedef)描述;数据元素类型约定为ElemType,由用户在使用该数据类型时自行定义
- 基本操作的算法都用如下格式的函数来描述
函数类型 函数名(函数参数表)
{
// 算法说明
语句序列
}// 函数名 - 内存的动态分配与释放。
使用new和delete动态分配和释放内存空间:
分配空间 指针变量 = new 数据类型;
释放空间 delete 指针变量; - 赋值语句:
简单赋值 变量名 = 表达式;
串联赋值 变量名1 = 变量名2 = … = 变量名 n = 表达式;
成组赋值 (变量名1,…,变量名n) = (表达式1,…,表达式n);
结构赋值 变量名 = 条件表达式?表达式T:表达式F;
交换赋值 变量名 1 <–> 变量名 2; - 选择语句:
条件语句1 if(表达式) 语句;
条件语句2 if(表达式) 语句;
else 语句;
开关语句 switch (表达式)
{
case 值1: 语句序列 1; break;
case 值2: 语句序列 2; break;
…
case 值n: 语句序列 n; break;
default: 语句序列 n+1;
} - 循环语句:
for语句 for(表达式1;条件; 表达式2) 语句;
while语句 while(条件) 语句;
do-while语句 do{
语句序列;
} while(条件); - 结束语句
函数结束语句 return 表达式;
return;
case或循环语句break;
一场结束语句exit(异常代码); - 输入输出语句使用C++流式输入输出的形式:
输入语句 cin>>变量1>>…>>变量 n;
输出语句 cout<<表达式1<<…<<表达式n; - 基本函数
求最大值 Max (表达式1,…,表达式n)
求最小值 Min(表达式1,…,表达式n)
VS2019使用说明
因我们需要在解决方案中添加多个源文件其中就会出现多个main函数的问题
为了使得编译通过,以VS2019为例进行设置
- 进入工程界面
- 右键选择不需要进行生成的main函数所在的源文件
- 点击属性
在如上图页面中从生成中排除一栏选择“是”则该文件就不会参与生成