数据结构无向图的建立帮忙写个建立无向图的代码,C语言,要能跑通的代码哦~(无向图通过邻接矩阵建立)

来源:学生作业帮助网 编辑:作业帮 时间:2024/06/09 00:56:58
数据结构无向图的建立帮忙写个建立无向图的代码,C语言,要能跑通的代码哦~(无向图通过邻接矩阵建立)
xWmOG+ #ET*j @z>l mBL!Qx-B4`#-`gnO WG˗]{;;33Ԑ\^-)W/ CvkT-J lmyc~Uz^sF#c?}.`~1%|mlA~^Nd*bRCAJo孲\ؐNJH=*+.X` ROba$GO ̣8;K hZP°Ģ^"06J;?}q* u_XL]Q}M G}ꄛdE%<6# nѪ*iSPA"A*1%|hfG"|4Ic[_4aD^5T?dq\&/?73)xwO':YE#hHԧge{5r"t@&2W0.EkpGE:5(=C)^DܝD&:=vz^DON PAHEWrOߘ w;i@ &In̜E|@O3c1)RENXYր  DMzMGC}~|Dp@A8QA7 dy=38:f)=qk3Պf +]3q#U1gM&Kyy)"#v,w' 83ReYb[X z^9v9~bLe-`56kP='O*0aCzԽ:ALȰSJH-$T'hXLHgںO5i#fOC99"MZV&`V{gD&D6 C@LLJ{Q\R;ԝ5@38SC7JQNLmڽK"nG}su\~:rY,[ mp쉳XsdDﱖ;uK,m|DZTh Ho~v)Ȧ:X]6`[=:Rm4Nz{m5W>r掹cxi.5ud$}/i^oW6j9r-guIkݾ}37 [E%|x7O\MOI£t<:_S^8p/?QJ/,k M@G7z

数据结构无向图的建立帮忙写个建立无向图的代码,C语言,要能跑通的代码哦~(无向图通过邻接矩阵建立)
数据结构无向图的建立
帮忙写个建立无向图的代码,C语言,要能跑通的代码哦~(无向图通过邻接矩阵建立)

数据结构无向图的建立帮忙写个建立无向图的代码,C语言,要能跑通的代码哦~(无向图通过邻接矩阵建立)
您好,这是我们数据结构一个作业程序,希望能帮到你.
#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(G.vexs[i]!=v)
{
++i;
}
return i;
}
int createMGraph_L(MGraph_L &G)//创建图用邻接矩阵表示
{
char v1,v2;
int i,j,w;
printf("创建无向图\n");
printf("请输入无向图G的顶点数和弧数:");
scanf("%d%d",G.vexnum,G.arcnum);
for(i=0;i!=G.vexnum;++i)
{
printf("输入顶点%d\n",i);
scanf("%c",G.vexs[i]);
}
for(i=0;i!=G.vexnum;++i)
for(j=0;j!=G.vexnum;++j)
{
G.arcs[i][j].adj=int_max;
G.arcs[i][j].info=NULL;
}
printf("输入一条边依附的顶点和权:\n");
for(int k=0;k!=G.arcnum;++k)
{

scanf("%c%c%d",&v1,&v2,&w); //输入一条边依附的两点及权值
i=LocateVex(G,v1); //确定顶点V1和V2在图中的位置
j=LocateVex(G,v2);
G.arcs[i][j].adj=w;
G.arcs[j][i].adj=w;
}
return G.vexnum;
}
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!=G.vexnum;++i)
{
gra.vertices[i].data=G.vexs[i];
gra.vertices[i].firstarc=NULL;
}
for(i=0;i!=G.vexnum;++i)
{
for(j=0;j!=G.vexnum;++j)
{
if(gra.vertices[i].firstarc==NULL)
{
if(G.arcs[i][j].adj!=int_max&&j!=G.vexnum)
{
arc=(ArcNode *)malloc(sizeof(ArcNode));
arc->adjvex=j;
gra.vertices[i].firstarc=arc;
arc->nextarc=NULL;
p=arc;
++j;
while(G.arcs[i][j].adj!=int_max&&j!=G.vexnum)
{
tem=(ArcNode *)malloc(sizeof(ArcNode));
tem->adjvex=j;
gra.vertices[i].firstarc=tem;
tem->nextarc=arc;
arc=tem;
++j;
}
--j;
}
}
else
{
if(G.arcs[i][j].adj!=int_max&&j!=G.vexnum)
{
arc=(ArcNode *)malloc(sizeof(ArcNode));
arc->adjvex=j;
p->nextarc=arc;
arc->nextarc=NULL;
p=arc;
}


}

}
}
gra.vexnum=G.vexnum;
gra.arcnum=G.arcnum;
printf("图G的邻接表创建成功!\n");
return 1;
}
typedef struct
{
int adjvex;
int lowcost;
}closedge;
int prim(int g[][max],int n) //最小生成树PRIM算法
{
int lowcost[max],prevex[max]; //LOWCOST[]存储当前集合U分别到剩余结点的最短路径
//prevex[]存储最短路径在U中的结点
int i,j,k,min;
for(i=2;i