# showalgorithm **Repository Path**: tangzhengyue/showalgorithm ## Basic Information - **Project Name**: showalgorithm - **Description**: 数据结构课设 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2013-10-25 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 口述要求 # 关于图
可以控制台、可以窗口程序
语言不限
三级目录 # 书面要求 # ---------- # 《算法与数据结构课程设计》进度表 班级:计科11101-11105
课程设计题目:图的基本操作及应用
> 数据结构课程设计是在学完数据结构课程之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。
> 一.设计目的
> 1. 能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。 1. 提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。 1. 初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。 1. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。 1. 培养根据选题需要选择学习书籍,查阅文献资料的自学能力。
> 二.设计任务
*设计一个基于DOS菜单的应用程序。要利用多级菜单实现各种功能。内容如下:* > 1. 无向图的基本操作及应用
① 创建无向图的邻接矩阵√
② 创建无向图的邻接表√
③ 无向图的深度优先遍历√
④ 无向图的广度优先遍历√ 2. 无向网的基本操作及应用
① 创建无向网的邻接矩阵√
② 创建无向网的邻接表√
③ 求最小生成树√ 1. 有向图的基本操作及应用
① 创建有向图的邻接矩阵√
② 创建有向图的邻接表√
③ 拓扑排序√ 1. 有向网的基本操作及应用
① 创建有向网的邻接矩阵
② 创建有向网的邻接表√
③ 关键路径√
④ 单源最短路径√
⑤ 每对顶点之间的最短路径 ---------- 图的表达基于EasyX图形库画图 # 示例代码 # ```cpp void ShowMainMenu(){ cout<<"\n"; cout<<" ***************图的基本操作及应用******************\n"; cout<<" * 1 无向图的基本操作及应用 *\n"; cout<<" * 2 无向网的基本操作及应用 *\n"; cout<<" * 3 有向图的基本操作及应用 *\n"; cout<<" * 4 有向网的基本操作及应用 *\n"; cout<<" * 5 退出 *\n"; cout<<" ***************************************************\n"; } void UDG(){ MGraph MG; ALGraph ALG; int n; do { cout<<"\n"; cout<<" ***************无向图的基本操作及应用***************\n"; cout<<" * 1 创建无向图的邻接矩阵 *\n"; cout<<" * 2 创建无向图的邻接表 *\n"; cout<<" * 3 无向图的深度优先遍历 *\n"; cout<<" * 4 无向图的广度优先遍历 *\n"; cout<<" * 5 退出 *\n"; cout<<" ****************************************************\n"; cin>>n; switch(n){ case 1: CreatUDG_M(MG); break; case 2: CreatUDG_ALG(ALG); dispgraph(ALG); break; case 3: break; case 4: break; default: if (n!=5) cout<<"错误,重新输入\n"; } }while(n!=5); } void UDN(){ MGraph MN; ALGraph ALN; int n; do{ cout<<"\n"; cout<<" ***************无向网的基本操作及应用***************\n"; cout<<" * 1 创建无向网的邻接矩阵 *\n"; cout<<" * 2 创建无向网的邻接表 *\n"; cout<<" * 3 prim算法求最小生成树 *\n"; cout<<" * 4 kraskal算法求最小生成树 *\n"; cout<<" * 5 退出 *\n"; cout<<" ****************************************************\n"; cin>>n; switch(n){ case 1: CreatUDN_M(MN); break; case 2: CreatUDN_ALG(ALN); dispgraph_N(ALN); break; case 3: break; case 4: break; default: if (n!=5) cout<<"错误,重新输入\n"; } }while(n!=5); } void DG(){ int n; do { cout<<"\n"; cout<<" ***************有向图的基本操作及应用***************\n"; cout<<" * 1 创建有向图的邻接矩阵 *\n"; cout<<" * 2 创建有向图的邻接表 *\n"; cout<<" * 3 拓扑排序 *\n"; cout<<" * 4 退出 *\n"; cout<<" ****************************************************\n"; cin>>n; switch(n){ case 1: break; case 2: break; case 3: break; default: if (n!=4) cout<<"错误,重新输入\n"; } }while(n!=4); } void DN(){ int n; do{ cout<<"\n"; cout<<" ***************有向网的基本操作及应用***************\n"; cout<<" * 1 创建有向网的邻接矩阵 *\n"; cout<<" * 2 创建有向网的邻接表 *\n"; cout<<" * 3 关键路径 *\n"; cout<<" * 4 单源顶点最短路径问题 *\n"; cout<<" * 5 每对顶点间最短路径问题 *\n"; cout<<" * 6 退出 *\n"; cout<<" ****************************************************\n"; cin>>n; switch(n){ case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; default: if (n!=6) cout<<"错误,重新输入\n"; } }while(n!=6); } void main(){ int n; do{ ShowMainMenu(); cin>>n; switch(n){ case 1: UDG(); break; case 2: UDN(); break; case 3: DG(); break; case 4: DN(); break; default: if (n!=5) cout<<"错误,重新输入\n"; } }while(n!=5); } ```