哪位学过c和c++的高手能把小弟我这个c语言的程序改成c++的
哪位学过c和c++的高手能把我这个c语言的程序改成c++的
本人只学过c++,可是看数据结构c语言版的有许多地方不明白
这个关于图的问题关于输出语句中的许多地方不明白,高手能否帮我把他改成c++的,谢谢了。
#include "stdio.h "
#define MAXE 100 /*定义最大空间100*/
struct edges
{
int bv;
int tv;
int w;
};
typedef struct edges edgeset;
int seeks(int set[],int v) /*定义一个整形变量seeks*/
{
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)
{
printf( "(%d,%d):%d\n ",ge[j].bv,ge[j].tv,ge[j].w);
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 dijkstra(int cost[MAXE][MAXE],int dist[MAXE],int path[MAXE],int s[MAXE],int n,int v0) /*定义函数dijkstra*/
{
int u,vnum,w,wm;
for(w=1;w <=n;w++)
{
dist[w]=cost[v0][w];
if(cost[v0][w] <32767)
path[w]=v0;
}
vnum=1;
while(vnum <=n-1)
{
wm=32767;
u=v0;
for(w=1;w <=n;w++)
if(s[w]==0&&dist[w] <wm)
{
u=w;
wm=dist[w];
}
s[u]=1;
vnum++;
for(w=1;w <=n;w++)
if(s[w]==0&&dist[u]+cost[u][w] <dist[w]&&cost[u][w]!=32767)
{
dist[w]=dist[u]+cost[u][w];
path[w]=u;
}
}
}
void printpath1(int dist[],int path[],int s[],int n,int v0) //定义函数printpaht1
{
int i,k;
for(i=1;i <=n;i++)
if(s[i]==1)
{
k=i;
while(k!=v0)
{
printf( "%d <- ",k);
k=path[k];
}
printf( "%d:%d\n ",k,dist[i]);
}
else
printf( "%d <-%d:32767\n ",i,v0);
}
void printpath2(int dist[],int path[],int v0,int v1) //定义函数printpath2
{
int k;
k=v1;
while(k!=v0)
{
printf( "%d <- ",k);
k=path[k];
}
printf( "%d:%d\n ",k,dist[v1]);
}
void main()
{
edgeset ge[MAXE];
int cost[MAXE][MAXE],dist[MAXE],path[MAXE],s[MAXE],a,n,e,i,j,k,v0,v1;
printf( "input the number of point: ");
scanf( "%d ",&n);
printf( "input the number of edges: ");
本人只学过c++,可是看数据结构c语言版的有许多地方不明白
这个关于图的问题关于输出语句中的许多地方不明白,高手能否帮我把他改成c++的,谢谢了。
#include "stdio.h "
#define MAXE 100 /*定义最大空间100*/
struct edges
{
int bv;
int tv;
int w;
};
typedef struct edges edgeset;
int seeks(int set[],int v) /*定义一个整形变量seeks*/
{
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)
{
printf( "(%d,%d):%d\n ",ge[j].bv,ge[j].tv,ge[j].w);
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 dijkstra(int cost[MAXE][MAXE],int dist[MAXE],int path[MAXE],int s[MAXE],int n,int v0) /*定义函数dijkstra*/
{
int u,vnum,w,wm;
for(w=1;w <=n;w++)
{
dist[w]=cost[v0][w];
if(cost[v0][w] <32767)
path[w]=v0;
}
vnum=1;
while(vnum <=n-1)
{
wm=32767;
u=v0;
for(w=1;w <=n;w++)
if(s[w]==0&&dist[w] <wm)
{
u=w;
wm=dist[w];
}
s[u]=1;
vnum++;
for(w=1;w <=n;w++)
if(s[w]==0&&dist[u]+cost[u][w] <dist[w]&&cost[u][w]!=32767)
{
dist[w]=dist[u]+cost[u][w];
path[w]=u;
}
}
}
void printpath1(int dist[],int path[],int s[],int n,int v0) //定义函数printpaht1
{
int i,k;
for(i=1;i <=n;i++)
if(s[i]==1)
{
k=i;
while(k!=v0)
{
printf( "%d <- ",k);
k=path[k];
}
printf( "%d:%d\n ",k,dist[i]);
}
else
printf( "%d <-%d:32767\n ",i,v0);
}
void printpath2(int dist[],int path[],int v0,int v1) //定义函数printpath2
{
int k;
k=v1;
while(k!=v0)
{
printf( "%d <- ",k);
k=path[k];
}
printf( "%d:%d\n ",k,dist[v1]);
}
void main()
{
edgeset ge[MAXE];
int cost[MAXE][MAXE],dist[MAXE],path[MAXE],s[MAXE],a,n,e,i,j,k,v0,v1;
printf( "input the number of point: ");
scanf( "%d ",&n);
printf( "input the number of edges: ");