邻接表实现prim算法c语言,!采用邻接表存储的prim算法

当前位置:我的异常网» 数据结构与算法 » !采用邻接表存储的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

文章评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值