文档介绍:软件技术基础实验六
-----图的遍历运算
班级:电信0901
学号:0703090106
姓名:蒋玮珂
实验六图的遍历运算
(1)实验题目:
编写一个程序,实现图的遍历运算,在此基础上设计一个主程序完成如下功能
(1)从指定顶点开始的深度优先遍历(递归实现)
(2)从指定顶点开始的深度优先遍历(非递归实现)
(3)从指定顶点开始的广度优先遍历
(2)实验目的:
1、掌握图的数据类型描述及特点。
2、掌握图的存储结构(邻接表和邻接矩阵)。
3、掌握图的遍历算法的实现。
(3)调试通过并正确执行给定功能要求的实验代码
#include ""
#include<>
#include<>
#include <>
#define MAXVEX 100
typedef char VertexType[3];
typedef struct edgenode
{ int adjvex;
int value;
struct edgenode *next;
}ode;
typedef struct vexnode
{ VertexType data;
ode *firstarc;
}VHeadNode;
typedef struct vertex
{ int adjvex;
VertexType data;
}VType;
typedef struct graph
{ int n,e;
VType vexs[MAXVEX];
int edges [MAXVEX][MAXVEX];
}AdjMatix;
typedef struct
{ int n,e;
VHeadNode adjlist[MAXVEX];
}AdjList;
//将邻接矩阵g转化成邻接表G:
void MatToList(AdjMatix g, AdjList *&G)
{ int i,j;
ode *p;
G=(AdjList *)malloc(sizeof(AdjList));
for (i=0;i<;i++)
{ G->adjlist[i].firstarc=NULL;
strcpy( G->adjlist[i].data,[i].data);
}
for (i=0;i<;i++)
for(j=-1;j>=0;j--)
if ([i][j]!=0)
{ p=(ode *)malloc(sizeof(ode));
p->value=[i][j];p->adjvex=j;
p->next=G->adjlist[i].firstarc;
G->adjlist[i].firstarc=p;
}
G->n=;G->e=;
}
//广度优先:
void BFS(AdjList *G,int vi,FILE *fp3)
{
int i,v,visited[MAXVEX];char s;
int Qu[MAXVEX],front=0,rear=0;
ode *p;
for (i=0;i<G->n;