读书人

问一下下面这个程序中(很短)seeks函

发布时间: 2012-02-06 15:52:44 作者: rapoo

问一下下面这个程序中(很短)seeks函数的作用,看不懂啊
#include "stdio.h "
#include <iostream>

using namespace std;

#define MAXE 100 //定义最大空间100
struct edges
{
int bv; //初始顶点
int tv; //结束顶点
int w; //两顶点间权值
};
typedef struct edges edgeset;
int seeks(int set[],int v)
{
int i;
i=v;
while(set[i]> 0)
i=set[i];
return i;
}
void kruskal(edgeset ge[],int n,int e)
{
int set[MAXE],v1,v2,i,j;
for(i=1;i <n+1;i++)
set[i]=0;
i=1;
j=1;
while(j <=e&&i <=n-1)
{
v1=seeks(set,ge[j].bv);
v2=seeks(set,ge[j].tv);
if(v1!=v2)
{
cout < < "( " < <ge[j].bv < < ", " < <ge[j].tv < < "): " < <ge[j].w < <endl;
set[v1]=v2;
i++;
}
j++;
}
}
void insertsort(edgeset ge[],int e)
{
int i,j;
for(i=2;i <=e;i++)
if(ge[i].w <ge[i-1].w)
{
ge[0]=ge[i];
j=i-1;
while(ge[0].w <ge[j].w)
{
ge[j+1]=ge[j];
j--;
}
ge[j+1]=ge[0];
}
}

void main()
{
edgeset ge[MAXE];
int n,e,i;
cout < < "input the number of point: ";
cin> > n;
cout < < "input the number of edges: ";
cin> > e;
cout < < "input the edges: " < <endl;
for(i=1;i <=e;i++)
cin> > ge[i].bv> > ge[i].tv> > ge[i].w;
insertsort(ge,e);
kruskal(ge,n,e);
}

[解决办法]
seeks是重新对指向位置进行操作。
[解决办法]
定位到该连通分支的根结点

读书人网 >软件架构设计

热点推荐