超简单~~关于图的创建的一个小问题

conan328745332 2009-12-14 08:50:09
#include <iostream>
using namespace std;
#define INFINITY 1000
int i,j,k;
struct ArcCell{
int adj;
};
struct Graph{
char vexs[MAX_VERTEX_NUM];
int arcs[20][20];
int vexnum,arcnum;
};
int Locate(Graph G,char v){
for(i=0;i<G.vexnum;i++)
if(v==G.vexs[i])
return i;
return -1;
}
void Creat(Graph &G){
cout<<"input the vexnum and the arcnum:";
cin>>G.vexnum>>G.arcnum;
cout<<"input the vexs";
for(i=0;i<G.vexnum;i++)
cin>>G.vexs[i];
for(i=0;i<G.vexnum;i++){
for(j=0;j<G.arcnum;j++)
G.arcs[i][j]=INFINITY;}
cout<<"input the arcs and the weight:";
char v1,v2;
int w;
for(k=0;k<G.arcnum;k++){
cin>>v1>>v2>>w;
i=Locate(G,v1);
j=Locate(G,v2);
G.arcs[i][j]=w;
G.arcs[j][i]=G.arcs[i][j];
cout<<G.arcs[0][1]<<endl;//如果i=1,j=0,为什么用cout<<G.arcs[i][j].adj<<endl和cout<<G.arcs[1][0]<<endl;输出的结果不一样
}
}

void main(){
Graph G;
Creat(G);
}
...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
donkey301 2009-12-14
  • 打赏
  • 举报
回复
我没调试,但你的程序中没有一个地方是对.adj变量赋值的,所以cout < <G.arcs[i][j].adj < <endl这句话应该都是输出的0。
MasterLuo 2009-12-14
  • 打赏
  • 举报
回复
代码问题1:MAX_VERTEX_NUM 没定义
代码问题2:i, j是全局变量,由于你输入查找第一个顶点的时候,虽然会改变i的值,但是你又赋值回来了。但是你查找j的值的时候,你在用i用循环,这样i的值就被改变了!那么i就不是原来的值了(有些时候)。所以你的结果不对。修改后的代码如下:


#include <iostream>
using namespace std;
#define INFINITY 1000

#define MAX_VERTEX_NUM 100
struct ArcCell{
int adj;
};
struct Graph{
char vexs[MAX_VERTEX_NUM];
int arcs[20][20];
int vexnum,arcnum;
};
int Locate(Graph G,char v){
int i;
for(i=0;i <G.vexnum;i++)
if(v==G.vexs[i])
return i;
return -1;
}
void Creat(Graph &G){
int i,j,k;
cout <<"input the vexnum and the arcnum:";
cin>>G.vexnum>>G.arcnum;
cout <<"input the vexs";
for(i=0;i <G.vexnum;i++)
cin>>G.vexs[i];
for(i=0;i <G.vexnum;i++){
for(j=0;j <G.arcnum;j++)
G.arcs[i][j]=INFINITY;}
cout <<"input the arcs and the weight:";
char v1,v2;
int w;
for(k=0;k <G.arcnum;k++){
cin>>v1>>v2>>w;
i=Locate(G,v1);
j=Locate(G,v2);
G.arcs[i][j]=w;
G.arcs[j][i]=G.arcs[i][j];
cout <<G.arcs[0][1] <<endl;
cout <<G.arcs[i][j] << endl;
//如果i=1,j=0,为什么用cout <<G.arcs[i][j].adj <<endl和cout <<G.arcs[1][0] <<endl;输出的结果不一样
}
}

void main(){
Graph G;
Creat(G);
}

33,028

社区成员

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

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