. .
. v .
数据构造实验报告
第 6 次实验
学号:20141060106 :叶佳伟
一、实验目的
1、复****图的逻辑构造、存储构造及根本操作;
2、掌握邻接矩阵、邻接表及图的创立、遍历;
3、了解图的应用。
二、实验内容
1、〔必做题〕假设图中数据元素类型是字符型,请采用邻接矩阵或邻接表实现图的以下根本操作:
〔 1〕构造图〔包括有向图、有向网、无向图、无向网〕;
〔 2〕根据深度优先遍历图;
〔 3〕根据广度优先遍历图。
三、算法描述
〔采用自然语言描述〕
四、详细设计
〔画出程序流程图〕
. .
. v .
五、程序代码
〔给出必要注释〕
*include<>
*include<>
*include<>
*include<>
*include<>
*define INFINITY 255678 /*赋初值用*/
*define MAX_VERTEX_NUM 20 /* 最大顶点个数 */
enum {DG, DN, UDG, UDN};
typedef struct ArcCell
{
int adj;/*顶点关系类型,对无权图,用1(是)或0(否)表示相邻否;对带权图,那么为权值*/
char *info;/*弧相关信息指针*/
}AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
. .
. v .
typedef struct
{
char vexs[MAX_VERTEX_NUM][5];/*顶点向量*/
AdjMatrix arcs; /*邻接矩阵*/
int vexnum, arum;/*图的当前顶点数和弧数*/
int kind;
}MGraph;
void CreateDG(MGraph *G);
void CreateDN(MGraph *G);
void CreateUDG(MGraph *G);
void CreateUDN(MGraph *G);
int LocateVex(MGraph *G, char v[]);
void print(MGraph *G);
int main(void)
{
MGraph *G;
G = (MGraph *)malloc(sizeof(MGraph));
. .
. v .
printf("请选者 0-有向图,1-有向网,2-无向图,3-无向网 : ");
scanf("%d", &G->kind);
switch(G->kind)
{
case DG :
CreateDG(G);
print(G);
break;
case DN :
CreateDN(G);
print(G);
break;
case UDG :
CreateUDG(G);
print(G);
break;
case UDN :
数据结构实验报告 来自淘豆网www.taodocs.com转载请标明出处.