数据结构-基本算法演示程序(附源码)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档