克鲁斯卡尔算法哪里出错了??

jianyuzhimei 2010-12-30 08:26:39
//克鲁斯卡尔算法
typedef struct
{
int u;int v;int w;
}Edge;
void Kruskal(Edge E[],int n,int e)
{
int i,j,m1,m2,sn1,sn2,k;
int vset[MAXVEX];
for(i=0;i<n;i++) vset[i]=i;//初始化辅助数组
k=1;j=0;
while(k<n)
{
m1=E[j].u;m2=E[j].v;//取一条边的头尾顶点
sn1=vset[m1];sn2=vset[m2];//得到两个顶点所属的集合编号
if(sn1!=sn2)//两顶点属不同的集合,该边是最小生成树的边
{
cout<<"("<<m1<<","<<m2<<"):"<<E[j].w<<endl;
k++;//生成边数增1
for(i=0;i<n;i++)//两个集合统一编号
if(vset[i]==sn2)//集合编号为的改为
vset[i]=sn1;
}
j++;//扫描下一条边
}
}

//主函数
void main()
{
AdjList *g;
CreatAdjList(g);
DispAdjList(g);
}


error C2601: 'Kruskal' : local function definitions are illegal
error C2601: 'main' : local function definitions are illegal
fatal error C1004: unexpected end of file found


...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianyuzhimei 2011-01-03
  • 打赏
  • 举报
回复
谢谢各位,我晓得哪里错了,是前边有一个地方少了一个},谢谢各位了!
chaoliu1024 2011-01-02
  • 打赏
  • 举报
回复
1.void Kruskal(Edge E[],int n,int e)// 可能参数错了
2.// main函数这样写
int main(void)
{
return 0;
}
3.fatal error C1004: unexpected end of file found // 可能这段代码少了“;”“}”之类的东西
吴明治 2011-01-01
  • 打赏
  • 举报
回复
1 主函数改成这样 以后都这样写 不要用void了
int main()
{
return 0;
}
2 最后一行后加一行空行
jianyuzhimei 2010-12-30
  • 打赏
  • 举报
回复
仁兄,你这个我看不懂啊,你帮忙看看我的咋了?这只是其中的一部分,不过那三个错误都是在这部分内,如果你要整个的我再发给你
Jophoenix 2010-12-30
  • 打赏
  • 举报
回复
//kruskal
#include <iostream>
#include <algorithm>
const int M=501;
using namespace std;
int n;
int ct=0;
int pre[M];
int graph[M][M];
struct edge
{
int u,v; //首末结点
int d; //边的费用
}e[125001];
bool comp(const edge &a,const edge &b)
{
return a.d<b.d;
}
int findanc(int x) //找祖先
{
while(x!=pre[x])
x=pre[x];
return x;
}
int kruskal()
{
int ans=0;
for(int i=1;i<=n;i++) //结点个数
pre[i]=i;
sort(e,e+ct,comp); //ct是边的个数
for(int i=0;i<ct;i++)
{
int f1=findanc(e[i].u);
int f2=findanc(e[i].v);
if(f1!=f2) //如果首末两端的祖先不同,也就说明一条边在s中一条边在v-s中
{
ans+=e[i].d;
pre[f1]=f2; //把u的祖先设为v,这样就把那个结点加入s中了
}
}
return ans;
}

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧