-
.
带权无向图(用邻接矩阵表示)
#include
#include
#define
int_max 10000
#define inf 9999
#define max 20
//
邻接矩阵定义
typedef struct ArcCell
{
int adj;
char *info;
}ArcCell,AdjMatrix[20][20];
typedef struct
{
char vexs[20];
AdjMatrix
arcs;
int vexnum,arcnum;
}MGraph_L;
int
LocateVex(MGraph_L G,char v)//
查找顶点
v
的序号
{
int i=0;
while([i]!=v)
{
++i;
}
return i;
}
int createMGraph_L(MGraph_L
&G)//
创建图用邻接矩阵表示
{
char v1,v2;
int i,j,w;
printf(
创建无向图
n
printf(
请输入无向图
G
的
顶点数和弧数
:
scanf(
for(
i=0;i!=;++i)
{
printf(
输入顶点
%dn
scanf(
}
for(i=0;i!=;++i)
for(j=0;j!=;++j)
{
'.
.
[i][j].adj=int_max;
[i][j].info=NULL;
}
printf(
输入一条边依附的顶点和权
:n
for(int k=0;k!=;++k)
{
scanf(
//
输入一条边依附的两点及权值
i=LocateVex(G,v1);
//
p>
确定顶点
V1
和
V
2
在图中的位置
j=LocateVex(G,v2);
[i][j].adj=w;
[j][i].adj=w;
}
return
}
typedef struct ArcNode
//
弧结点
{
int adjvex;
//
该弧所指向的顶点的位置
struct ArcNode *nextarc;
//
指向下一条弧的指针
//char *info;
//
该弧相关信息的指针
}ArcNode;
typedef struct
vnode
//
邻接链表顶点头接点
{
char data;
//
顶点信息
ArcNode *firstarc;
//
指向第一条依附该顶点的弧的指针
}vnode,adjlist;
typedef
struct
//
图的定义
{
adjlist vertices[max];
int vexnum,arcnum;
//
图的当前顶点数和弧数
}ALGraph;
int
CreateUDG(ALGraph &gra,MGraph_L
G)//
用邻接表存储图
{
int i=0,j=0;
ArcNode
*arc,*tem,*p;
for(i=0;i!=;++i)
{
es[i].data=[i];
es[i].firstarc=NULL;
}
for(i=0;i!=;++i)
{
'.