# 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);
}
```