数据结构实验:循环队列子系统的源代码~~急急
1)创建图的邻接矩阵和邻接表
(2)验证图的深度优先、广度优先遍历算法
(3)验证最短路径问题
问题太多了,每个小问题,都可以写不少代码
下面是问题1的代码,其他的问题,网上也很容易找到
// 邻接矩阵表示 :
#include iostream。
h>
#include stdlib。h>
#define INFINITY 0
#define MAX_VERTEX_NUM 10 //最大顶点数
#define MAX_EDGE_NUM 40 //最大边数
typedef enum {DG,DN,UDG,UDN}Graphkind;
typedef char VertexType; //顶点数据类型
typedef struct ArcCell
{
int adj; //无权图,1或0表示相邻否;带权图则是权值。
//int *info;
}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct
{
VertexType vexs[MAX_VERTEX_NUM]; //顶点向量
AdjMatrix arcs; //邻接矩阵
int vexnum,arcnum; //图的当前顶点数和弧数。
Graphkind kind;
}MGraph;
int LocateVex(MGraph G,VertexType v1)
{
int i;
for(i=0;iG。
vexnum;i )
if(G。vexs[i]==v1)
return i;
return -1;
}
int CreatUDN(MGraph &G)
// 采用数组表示法,构造无向网 G
{
VertexType v1,v2;
int w,j;
cout"输入图的顶点数"endl;
cin>>G。
vexnum;
cout"输入图的弧数"endl;
cin>>G。arcnum;
for(int i=0;iG。vexnum;i )
{
cout"输入顶点向量"endl;
cin>>G。
vexs[i];
}
for(i=0;iG。vexnum;i )
for(j=0;jG。vexnum;j )
{
G。
arcs[i][j]。adj=INFINITY; 。