实验报告内容:
一、实验目的、要求:
(1)熟练掌握图的二种存储结构的建立、图的深度优先搜索和广度优先搜索二种遍历方法。
(2)编写适当的主函数和相关函数,使实验题目运行出正确结果。
(3)当场编程、调试、编译。
(4)程序具有一定的健壮性、可读性,尽量简洁。
(5)程序运行完成后分别存盘,上交实验报告,要求写出实验体会
二、实验内容:
1、第一道题:
(1)实验题目
建立有向图的邻接矩阵存储结构,实现图的深度优先搜索算法。
(2)主要函数的设计思想
- 图的深度优先搜索算法的设计思想
{
int w;
printf("->%c",G.vexs[v]);
visited[v]=TRUE;
for(w=0;w<G.vexnum;w++)
if((G.arcs[v][w]!=0)&&(!visited[w]))
DFS(G,w);
}
(3)程序清单
#include"stdio.h"
#include"stdlib.h"
#define MaxInt 32767
#define MAX_VEX 20 //最大顶点个数
typedef enum{
FALSE,TRUE} boolean;
typedef char VertexType;
typedef struct{
//图的邻接矩阵存储结构
VertexType vexs[MAX_VEX]; //顶点向量
int arcs[MAX_VEX][MAX_VEX]; //邻接矩阵
int vexnum,arcnum; //图的当前顶点数和弧数
}MGraph;
boolean visited[MAX_VEX]; //访问标志数组
//图G中查找元素c的位置
int Locate(MGraph G,char c){
for(int i=0;i<G.vexnum;i++)
if(G.vexs[i]==c) return i;
return -1;
}
//请输入以下创建有向图的邻接矩阵存储结构
void createVDN(MGraph &G){
int i,j,s1,s2;
char a,b,temp;
printf("输入定点数和弧数:");
scanf("%d%d",&G.vexnum,&G.arcnum);
temp=getchar();
printf("输入%d个顶点(以一个空格做间隔):\n",G.vexnum);
for(i=0;i<G.vexnum;i++)
{
scanf("%c",&G.vexs[i]);
temp=getchar();
}
for(i=0;i<G.vexnum;i++)
for(j=0;j<G.vexnum;j++