开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2009-03-23
详细说明: #include #include #include #include #define ING 9999 int visited[10];/*访问标志数组*/ typedef struct ArcCell{ int adj;/*顶点关系类型,用1表示相邻,0表示不相邻*/ }ArcCell,**AdjMatrix;/*邻接矩阵*/ typedef struct type{ char data[3];/*顶点值*/ }VertexType; typedef struct{ VertexType *vexs;/*顶点向量*/ AdjMatrix arcs;/*邻接矩阵*/ int vexnum,arcnum;/*图的顶点数和边数*/ }MGraph; struct clos{ VertexType adjvex; int lowcost; }*closedge;/*辅助数组,low..为0时就表示已访问过*/ void InitGraph(MGraph *G)/*初始图*/ { int i,nu,mu; printf ("\n输入顶点的个数和(边)弧的个数:"); scanf("%d%d",&nu,&mu); G->arcs=(ArcCell **)malloc(nu*sizeof(ArcCell *)); for(i=0;iarcs[i]=(ArcCell *)malloc(nu*sizeof(ArcCell)); G->vexs=(VertexType *)malloc(nu*sizeof(VertexType));/*分配顶点空间*/ G->vexnum=nu;G->arcnum=mu;/*图的顶点数和边数*/ } void InsertGraph(MGraph *G,int i,VertexType e)/*给图顶点向量付值*/ { if(i<0||i>G->vexnum) return; strcpy(G->vexs[i].data,e.data); } int Locate(MGraph G,VertexType v1)/*确定v1在图顶点中的位置*/ { int i; for(i=0;ivexnum*sizeof(int)); for(i=0;i<10;i++) p[i]=0; for(i=0;ivexnum;++i)/*初始邻接表*/ { for(j=0;jvexnum;++j) G->arcs[i][j].adj=ING;} printf("按顺序输入顶点和它们的权值再顶点:如 'v1 3 v2' : \n"); for(k=0;karcnum;++k) {printf("输入第 %d 条(边)弧: \n",k+1); scanf("%s%d%s",v1.data,&w,v2.data);/*输入相邻的两个点值和权值*/ i=Locate(*G,v1);j=Locate(*G,v2);/*用i 和j来确定它们的位置*/ G->arcs[i][j].adj=w; G->arcs[j][i].adj=G->arcs[i][j].adj;/*有向图时就不用这个*/ } } int minimum(MGraph G,struct clos *closedge)/*求出辅助数组中除0之外最小权值的顶点位置*/ {int i,min,j,k; for(i=0;i=closedge[j].lowcost) {min=closedge[j].lowcost;k=j;} } return k; } void MiniSpanTree(MGraph G,VertexType u)/*从第U个顶点出发构造最小生成树,输出各条边*/ {int k,j,i; closedge=(struct clos *)malloc(G.vexnum*sizeof(struct clos));/*为数组分配空间*/ k=Locate(G,u);/*U的位置*/ for(j=0;j
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.