1 / 19
文档名称:

数据结构实验.docx

格式:docx   大小:113KB   页数:19页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验.docx

上传人:xiaobaizhua 2022/6/17 文件大小:113 KB

下载得到文件列表

数据结构实验.docx

相关文档

文档介绍

文档介绍:浙江大学城市学院实验报告
课程名称 数据结构
实验项目名称 实验十三/十四 图的基本操作
学生姓名—专业班级—学号 —
实验成绩 指导老师(签名) 日期 2014/06/09

1、 掌握图的主要存储DG,DN,AG,AN} GraphKind; //有向图,有向网,无向图,无向网
typedef struct{
Vexlist vexs; // 顶点数据元素
AdjMatrix arcs; // 二维数组作邻接矩阵 int vexnum, arcnum; // 图的当前顶点数和弧数 GraphKind kind; // 图的种类标志
} MGraph;
void Crea teGraph(MGraph &G, GraphKind kd)// 采用数组邻接矩阵表示法,构 造图G
{//构造有向网G
int i,j,k,q;
char v, w;
=kd; //图的种类
printf("输入要构造的图的顶点数和弧数:\n"); scanf("%d,%d",&,&);
get char();//过滤回车
printf("依次输入图的顶点名称ABCD...等等:\n");
for (i=0; i<; i++) scanf("%c", &[i]);//构造顶点数据 get char();//过滤回车
for (i=0; i<; i++) //邻接矩阵初始化
for (j=0; j<; j++)
if(kd==DN||kd==AN)
[i][j]=MaxValue; //网,初始值为无穷大
else
[i][j]=0; //图,初始为0
if(kd==DN||kd==AN)
printf("按照:尾顶点名->头顶点名,权值 输入数据:如A->B,23 \n");
else
prin tf(〃按照:尾顶点名-> 头顶点名输入数据:A->B\n〃);
for (k=0; k<; k++){ //构造邻接矩阵
if(kd==DN||kd==AN)
scanf(〃%c->%c,%d〃,&v,&w,&q); //输入弧的两个定点及该弧的权 重
else
scanf(〃%c->%c〃,&v,&w);
getchar();
for(i=0;i<; i++)
if([i]==v) break;//查找出 v 在 vexs[]中的位置 i if(i==) {cerr<<〃vertex ERROR!〃;exit(1);} for(j=0;j<; j++)
if([j]==w) break;//查找出 v 在 vexs[]中的位置 j if(j==) {cerr<<〃vertex ERROR!〃;exit(1);}
if(kd==AN)//无向网
{
[i][j]=q; //邻接矩阵对应位置置权值
[j][i]=q; //无向图为对称矩阵
}
else if(kd==DN)//有向网
[i][j]=q;
else if(kd==AG)//无向图
{
[i][j]=1; //对称矩阵
[j][i]=1;
else //有向图
[i][j]=1;
// getchar(); }
}//CreateGraph
/*注意输入格式,按以下方式输入 构造有向网
输入要构造的网的顶点数和弧数:
4,5
依次输入网的顶点名称ABCD...等等:
abcd
按照:尾顶点名->头顶点名,权值 输入数据:如A->B,23
a->b,5
a->c,8
c->b,7
a->d,4
d->c,3
输出邻接矩阵
OO
| 5 |
8 | 4
00
|O |
O | O
CO
| 7 |
O | O
CO
|O |
3 | O
Press
*/
any key to
continue
void PrintMGraph(MGraph &G)
{
int i,j;
switch()
{
case DG:
for (i=0; i<; i++)
{
for (j=0; j<; j++)
printf(" % | ",[i][j]); printf("\n");
}
break;
case DN:
for (i=0; i<