文档介绍:实验四图的基本操作
实验目的
掌握图的各种存储结构,特别要熟练掌握邻接矩阵和邻接表存储结构。
遍历是图各种应用的算法的基础,要熟练掌握图的深度优先遍历和广度优先遍历算法,复****栈和队列的应用。
实验内容
程序1
/* 邻接表的结点类型*/
typedef struct arc
{int adjvex;
struct arc *next;}ode;
typedef struct VexNode
{int vertex;
ode *firstarc;
}VerNode;
typedef VerNode AdjList[MAXNODE];
 
/* 建立图的邻接表*/
void CreatAdjlist(AdjList GL)
 
/* 从初始点v出发深度优先遍历邻接表GL表示的图*/
void DfsAdjlist(AdjList GL,int v)
 
/*从初始点v出发广度优先遍历邻接表GL表示的图*/
void BfsAdjlist(AdjList GL,int v)
程序2
/* 定义邻接矩阵类型*/
typedef int adjmatrix[n+1][n+1];
 
/* 建立图的邻接矩阵*/
void CreatMatrix(adjmatrix GA)
 
/* 从初始点v出发深度优先遍历邻接矩阵GA表示的图*/
void DfsMatrix(adjmatrix GA,int v)
 
/*从初始点v出发广度优先遍历邻接矩阵GA表示的图*/
void BfsMatrix(adjmatrix GA,int v)
 
# define MAXNODE 20
# include<>
# include<>
typedef int ElemType;
typedef struct arc
{
int adjvertex; //弧头结点在数组中的序列
struct arc *nextarc;
}ArcType;
typedef struct
{
ElemType data; //顶点信息
ArcType *firstrarc;
}VertexType;
typedef struct
{
VertexType vertex[MAXNODE];
int vexnum,um; //图中顶点数和弧数
}AdjList;
int CreateUDN(AdjList *G) //创建一个无向图G
{
int i,j,k;
int v1,v2;
int n,e;
ArcType p,q;
printf("\n输入图中顶点的个数n和边数e:\n");
scanf("%d,%d",&n,&e);
G->vexnum=n;
G->um=e;
printf("输入顶点的信息:\n");
for(k=0;k<n;k++)
{
scanf("%d",&G->vertex[k].data);
G->vertex[k].firstrarc