| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖, 1 人收藏
标题:连接,编译都没问题,但运行不出,求解
只看楼主 加入收藏
ld229
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-12-8
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:6 
连接,编译都没问题,但运行不出,求解
#include<stdlib.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>
#include<stdio.h>
#include<iostream.h>
#define MAX 1000
#define MAXLEN 9
typedef struct{char name[20];int num;}VEXTYPE;
typedef struct{char Menu(void);
    VEXTYPE vex[MAXLEN];
    int arc[MAXLEN][MAXLEN];
int vexnum,arcnum;
}MGraph;
void InitGraph(MGraph *G)
{int i,j;
G->vexnum=9;
G->arcnum=15;
for(i=0;i<G->vexnum;i++)
G->vex[i].num=i;
strcpy(G->vex[0].name,"北门山");
strcpy(G->vex[1].name,"汽车站");
strcpy(G->vex[2].name,"县医院");
strcpy(G->vex[3].name,"火车站");
strcpy(G->vex[4].name,"凤山公园");
strcpy(G->vex[5].name,"体育馆");
strcpy(G->vex[6].name,"南门街");
strcpy(G->vex[7].name,"一中");
strcpy(G->vex[8].name,"东门桥");
for(i=0;i<G->vexnum;i++)
for(j=0;j<G->vexnum;j++)
G->arc[i][j]=MAX;
G->arc[0][1]=70;
G->arc[0][6]=50;
G->arc[0][7]=60;
G->arc[1][2]=22;
G->arc[1][3]=55;
G->arc[1][7]=10;
G->arc[2][3]=45;
G->arc[3][4]=35;
G->arc[3][8]=40;
G->arc[4][5]=25;
G->arc[4][8]=30;
G->arc[5][6]=15;
G->arc[5][8]=20;
G->arc[6][7]=80;
G->arc[7][8]=5;
for(i=0;i<G->vexnum;i++)
for(j=0;j<G->vexnum;j++)
G->arc[j][i]=G->arc[i][j];
}
void Menu()
{printf("需要输出顶点信息请按0\n");
printf("需要边的信息请按1\n");
printf("需要修改请按2\n");
printf("需要求最短路径请按3\n");
printf("需要删除某个顶点请按4\n");
printf("需要插入某个顶点请按5\n");
printf("需要删除某条边请按6\n");
printf("需要插入某条边请按7\n");
printf("需要退出请按8\n");
}
void PutOutVex(MGraph *G)
{int a;
for(a=0;a<G->vexnum;a++)
printf("G->vex[a].num,G->vex[a].name");
}
void PutOutArc(MGraph *G)
{int b;
int c;
for(b=0;b<G->vexnum;b++)
for(c=0;c<G->vexnum;c++)
if(G->arc[b][c]<MAX)
printf("%s,%s,%d\n",G->vex[b].name,G->vex[c].name,G->arc[b][c]);}
void change(MGraph *G)
{int a1,a2,length;
printf("change\n");
scanf("%d",&a1);
scanf("%d",&a2);
printf("length:");
scanf("%d",&length);
G->arc[a1][a2]=G->arc[a2][a1]=length;}
void Dijkstra(MGraph *G)
{int v,w,i,j,min,t=0,x,v0,v1;
int final[20],D[20],p[20][20];
printf("请输入源顶点:\n");
scanf("%d",&v0);
if(v0<0||v0>G->vexnum)
{printf("此点编号不存在!请重新输入顶点编号:");
scanf("%d",&v0);}
printf("请输入结束顶点:\n");
scanf("%d",&v1);
if(v1<0||v1>G->vexnum)
{printf("此点编号不存在!请重新输入顶点编号:");
scanf("%d",&v1);}
for(v=0;v<G->vexnum;v++)
{D[v]=G->arc[v0][v1];
for(w=0;w<G->vexnum;w++)
p[v][w]=0;
if(D[v]<MAX)
{p[v][v0]=1;p[v][v]=1;}}
D[v0]=0;final[v0]=1;
for(i=1;i<G->vexnum;i++)
{min=MAX;
for(w=0;w<G->vexnum;w++)
if(!final[w])
if(D[w]<min){v=w;min=D[w];}
final[v]=1;
for(w=0;w<G->vexnum;w++)
if(!final[w]&&(min+G->arc[v][w]<D[w]))
{D[w]=min+G->arc[v][w];
for(x=0;x<G->vexnum;x++);
p[w][x]=p[v][x];
p[w][w]=1;}
}
   
printf("最短路径为:");
for( j=0;j<G->vexnum;j++)
{if(p[v1][j]==1)
printf("G->vex[j].name");
}}
void DeleteVex(MGraph *G)
{
    int row,col;
    int v0;
    printf("请输入要删除的顶点:\n");
    scanf("%d",&v0);
    for(int i=v0;i<G->vexnum;i++)
        G->vex[i]=G->vex[i+1];
    G->vexnum--;
    for(row=0;row<G->vexnum;row++)
    {
        for(col=v0;col<G->vexnum;col++)
            G->arc[row][col]=G->arc[row][col+1];
        for(col=0;col<G->vexnum;col++)
            G->arc[col][row]=G->arc[col][row+1];
}}
void DeleteArc(MGraph*G)
{
    int v0,v1;
    printf("请输入两顶点:\n");
scanf("%d,%d",&v0,&v1);
G->arc[v0][v1]=MAX;
G->arc[v1][v0]=MAX;
}
void InsertArc(MGraph *G)
{ int v0,v1,l=0;
printf("请输入两顶点:\n");
scanf("%d,%d",&v0,&v1);
printf("请输入路径长度:\n");
 scanf("%d",&l);
G->arc[v0][v1]=1;
G->arc[v1][v0]=1;
}
void main()
{int a;
MGraph b;
InitGraph(&b);

scanf("%d",&a);
while(a!=7)
{switch(a)
{case 0:PutOutVex(&b);Menu();break;
case 1:PutOutArc(&b);Menu();break;
case 2:change(&b);Menu();break;
case 3:Dijkstra(&b);Menu();break;
case 4:DeleteVex(&b);Menu();break;
case 5:DeleteArc(&b);Menu();break;
case 6:InsertArc(&b);Menu();break;
case 7:exit(1);break;
default:break;}
scanf("%d",&a);
}
}
搜索更多相关主题的帖子: include 汽车站 
2013-12-08 12:12
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:7 
{int a;
MGraph b;
InitGraph(&b);
printf("请输入一个0到6的整数!\n");//在此位置加这条语句。
scanf("%d",&a);
楼主的基本语法还要加强。

www.qunxingw.wang
2013-12-08 12:29
ld229
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-12-8
收藏
得分:0 
回复 2楼 qunxingw
可不可以再帮我看看,按3 最短路径求不出,谢谢!

[ 本帖最后由 ld229 于 2013-12-8 13:37 编辑 ]
2013-12-08 13:08
ld229
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-12-8
收藏
得分:0 
结果有的没法运行出来,求高手
2013-12-08 13:38
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:7 
看缩进不规范的代码  好晕

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-12-08 15:33
ld229
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-12-8
收藏
得分:0 
回复 5楼 yuccn
菜鸟一只,没办法,跟高手不能比
2013-12-08 16:12
ld229
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-12-8
收藏
得分:0 
最短路径、删除某个顶点、插入某个顶点、删除某条边、插入某条边运行不出
2013-12-08 16:13
快速回复:连接,编译都没问题,但运行不出,求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026697 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved