数据结构-基本算法演示程序(附源码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实习报告
实验名称:基本算法演示程序日期:2017年7月7日
姓名:李琛学号:20153204 班级:信1501-2 指导教师:陈娜
1.实验题目
4、Prim 算法输入:无向图(顶点序列,边序列)功能要求:输出最小生成树的各组成边及最小生成树的权值
5、Kruskal 算法输入:无向图(顶点序列,边序列)功能要求:输出最小生成树的各组成边及最小生成树的权值
6、Floyd 算法输入:有向图(顶点序列,有向边序列)功能要求:输出各顶点对间最短路径和路径长度
7、Dijkstra 算法输入:有向图(顶点序列,有向边序列),起始顶点功能要求:输出起始顶点到其它各顶点的最短路径和路径长度
2.需求分析
4、Prim 算法
输入:无向图(顶点序列,边序列)
功能要求:输出最小生成树的各组成边及最小生成树的权值
5、Kruskal 算法
输入:无向图(顶点序列,边序列)
功能要求:输出最小生成树的各组成边及最小生成树的权值
6、Floyd 算法
输入:有向图(顶点序列,有向边序列)
功能要求:输出各顶点对间最短路径和路径长度
7、Dijkstra 算法
输入:有向图(顶点序列,有向边序列),起始顶点
功能要求:输出起始顶点到其它各顶点的最短路径和路径长度
3.概要设计
4、Prim 算法
struct AMGraphp
{
VerTexType vexs[MVNum]; //顶点表
ArcType arcs[MVNum][MVNum]; //邻接矩阵
int vexnum, arcnum; //图的当前点数和边数
};
//Prim算法辅助结构体
struct close
{
VerTexType adjvex;
ArcType lowcost;
};
#define MaxInt 32767 //极大值
#define MVNum 100 //最大顶点数typedef char VerTexType; //顶点类型为字符型typedef int ArcType; //边的权值为整型5、Kruskal 算法
#define MaxInt 32767 //极大值
#define MVNum 100 //最大顶点数typedef char VerTexType; //顶点类型为字符型typedef int ArcType; //边的权值为整型struct AMGraphk
{
VerTexType vexs[MVNum]; //顶点表
ArcType arcs[MVNum][MVNum]; //邻接矩阵
int vexnum, arcnum; //图的当前点数和边数
};
//kruskal算法辅助结构体
struct Edge
{
VerTexType Head;
VerTexType Tail;
ArcType lowcost;
};
6、Floyd 算法
#define MaxInt 32767 //极大值
#define MVNum 100 //最大顶点数typedef char VerTexType; //顶点类型为字符型typedef int ArcType; //边的权值为整型int D[100][100], Path[100][100];
struct AMGraphf
{
VerTexType vexs[MVNum]; //顶点表
ArcType arcs[MVNum][MVNum]; //邻接矩阵
int vexnum, arcnum; //图的当前点数和边数
};
7、Dijkstra 算法
#define MaxInt 32767 //极大值
#define MVNum 100 //最大顶点数typedef char VerTexType; //顶点类型为字符型typedef int ArcType; //边的权值为整型int S[100], D[100], min, Path[100];
struct AMGraphd
{
VerTexType vexs[MVNum]; //顶点表
ArcType arcs[MVNum][MVNum]; //邻接矩阵
int vexnum, arcnum; //图的当前点数和边数
};
函数曾今调用关系
4.详细设计
Head.h
#pragma once
#include
#include
using namespace std;
//图的邻接矩阵存储表示
#define MaxInt 32767 //极大值
#define MVNum 100 //最大顶点数
typedef char VerTexType; //顶点类型为字符型typedef int ArcType; //边的权值为整型void prim();
void kruskal();
void dijkstra();
void floyd();
Main.cpp
#include"head.h"
void main()
{
int a=1;
cout <<"请输入想要运行的算法序号:"< cout <<"1、prim算法"< cout <<"2、kruskal算法"<< endl; cout <<"3、dijkstra算法"<< endl; cout <<"4、floyd算法"<< endl; while (a != 0) { cout <<"请输入:"; cin >> a; switch (a) { case 1: prim(); break; case 2: kruskal(); break; case 3: dijkstra(); break; case 4: floyd(); break; } } } Prim.cpp #include"head.h" struct AMGraphp { VerTexType vexs[MVNum]; //顶点表 ArcType arcs[MVNum][MVNum]; //邻接矩阵 int vexnum, arcnum; //图的当前点数和边数}; //Prim算法辅助结构体 struct close { VerTexType adjvex; ArcType lowcost; }; int LocateVex(AMGraphp G, VerTexType u)