当前位置:我的异常网» 数据结构与算法 » !采用邻接表存储的prim算法
!采用邻接表存储的prim算法
www.myexceptions.net 网友分享于:2013-03-10 浏览:138次
紧急求助!!采用邻接表存储的prim算法
请人才帮忙编写采用邻接表存储的prim算法.请帮忙补写prim算法,先谢过
#include
#include
#include
#define MAX 100
typedef struct ArcNode
{
int adjvex; //该弧所指向的顶点的位置
struct ArcNode *nextarc; //指向下一条弧的指针
int info; //该弧相关信息的指针
}ArcNode;
typedef struct VNode
{
char data; //顶点信息
ArcNode *firstarc; //指向第一条依附该顶点的弧的指针
}VNode,AdjList[MAX];
typedef struct{
AdjList vertices;
int vexnum,arcnum; //图的当前顶点数和弧数
}ALGraph;
int LocateVex(ALGraph G,char u)//查找顶点u的序号
{
int i;
for(i=0;i
{
if(u==G.vertices[i].data)
return i;
}
if(i==G.vexnum)
{
cout < < "error u! " <
exit(1);
}
return 0;
}
void CreateUDG(ALGraph &G) //建立无向图的邻接表
{
int i,j,k,w;
char v1,v2;
ArcNode *p;
cout < < "输入无向图的顶点数和边数: ";
cin> > G.vexnum> > G.arcnum;
cout < < "输入顶点: ";
for(i=0;i
{
cin> > G.vertices[i].data;
G.vertices[i].firstarc=NULL;
}
cout < < "输入一条边依附的顶点和权: " <
for(k=0;k
{
cin> > v1> > v2> > w;
i=LocateVex(G,v1);
j=LocateVex(G,v2);
p=(ArcNode *)malloc(sizeof(ArcNode));
p-> adjvex=j;
p-> info=w;
p-> nextarc=G.vertices[i].firstarc;
G.vertices[i].firstarc=p;
p=(ArcNode *)malloc(sizeof(ArcNode));
p-> adjvex=i;
p-> info=w;
p-> nextarc=G.vertices[j].firstarc;
G.vertices[j].firstarc=p;
}
}
void printG(ALGraph G) //输出该图的各顶点和邻接表
{
int i;
ArcNode *p;
cout < < "图的各顶点为: ";
for(i=0;i
cout <
cout <
cout < < "图的邻接表为: " <
for(i=0;i
{
cout <
p=G.vertices[i].firstarc;
while(p)
{
cout < < "-> " < adjvex;
p=p-> nextarc;
}
cout <
}
}
void Vdu(ALGraph G) //计算各顶点的度
{
int i,j;
int du[100];
ArcNode *p;
for(i=0;i
du[i]=0;
for(i=0;i
{
p=G.vertices[i].firstarc;
while(p)
{
du[i]++;
p=p-> nextarc;
}
}
cout < < "图中各顶点的度为: " <
for(j=0;j
文章评论