1 / 13
文档名称:

图实验报告.docx

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

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

分享

预览

图实验报告.docx

上传人:2890135236 2020/11/10 文件大小:38 KB

下载得到文件列表

图实验报告.docx

文档介绍

文档介绍:typedef struct{
int vexnum; // 顶点数目
int arcnum; // 弧数目
char vexs[MAX]; // 顶点向量
int arcs[MAX][MAX]; // 邻接矩阵
char kind; // 图的种类:有向图 D,无向图 U
}MGraph;
图的建立
MGraph Creat_MGraph(){
MGraph G;
int i,j,k,w;
char v1,v2;
printf(" 请输入图的种类(有向图( D), 无向图( U)! \n");
scanf("%c",&);
printf(" 请输入顶点数目和弧数目 !\n");
scanf("%d%d",&,&);
getchar();
printf(" 请输入各个顶点( abc) !\n");
for(i=0;i<;i++)
scanf("%c",&[i]);
getchar();
for(i=0;i<;i++){
for(j=0;j<;j++)
[i][j]=Infinity;
}
for(i=0;i<;i++){
printf(" 请输入第 (%d) 条弧的起始点和它的权重( ccd ) !\n",i+1);
scanf("%c%c%d",&v1,&v2,&w);
getchar();
j=k=0;
while([j]!=v1) j++; // 起点
while([k]!=v2) k++; // 终点
[j][k]=w;
if(=='U')
2
[k][j]=w;
}
return G;
}
int visited[MAX]; // 标志数组,显示是否遍历
递归深度遍历调用函数
void DFS(MGraph G,int i){
int j;
visited[i]=1;
printf(" %c ",[i]);
for(j=0;j<;j++)
if(!visited[j]&&[i][j]<Infinity)
DFS(G,j);
}
深度遍历函数
void M_DFSTraverse(MGraph G){
int i;
printf(" 深度遍历图结果如下: \n");
for(i=0;i<;i++)
visited[i]=0;
for(i=0;i<;i++)
if(!visited[i])
DFS(G,i);
printf("\n");
}
广度遍历函数
void M_BFSTraverse(MGraph G){
int i,j,k,Q[MAX],w;
j=k=0;
printf(" 广度遍历图结果如下: \n");
for(i=0;i<;i++)
visited[i]=0;
for(i=0;i<;i++)
3
if(!visited[i]){
visited[i]=1;
printf(" %c ",[i]);
Q[k++]=i;
while(j!=k){
j++;
for(w=0;w<;w++)
if(!visited[w] && [j][w]<Infinity){
visited[w]=1;
printf(" %c ",[w]);
Q[k++]=w;
}
}
}
printf("\n");
}
最小生成树函数,对无向图适用
void MiniSpanTree_PRIM(MGraph G,char u){
char adjvex[MAX];
int lowcost[MAX];
int i,j,k=0,min;
printf(" 图的最小生成树为: \n");
while([k]!=u) k++;
for(i