迪杰斯特拉算法 C语言

快乐池塘青蛙王子 2019-11-26 08:27:32
#include<iostream> #include<stdio.h> #define max 20 #define infinity 65535 typedef struct { int vertax[max]; int table[max][max]; int ver, edg; }graph; void creategraph(graph* t) { int i, j; int val; printf("请输入顶点数和边数(输入格式为:顶点数,边数):\n"); scanf("%d,%d", &t->ver,&t->edg); for (i = 1; i <= t->ver; i++); {t->vertax[i] = i; } for (i = 1; i <= t->ver; i++) for (j = 1; j <= t->ver; j++) { if (i == j) t->table[i][j] = 0; else t->table[i][j] = t->table[j][i] = infinity; } printf("请输入相应边权值(输入格式为:i,j,val):\n"); for(int k=1;k<=t->edg;k++){ scanf("%d,%d,%d", &i, &j, &t->table[i][j]); } } void shortpath(graph* d) { int i, j, k; int dis[20][20] = { 0 }; for(i=1;i<=d->ver;i++) for (j = 1; j <=d->ver; j++) { dis[i][j]=d->table[i][j]; } for (k = 1; k <=d->ver; k++) for (i = 1; i <= d->ver; i++) for (j = 1; j <= d->ver; j++) if (dis[i][k] + dis[k][j] < dis[i][j]) dis[i][j] = dis[i][k] + dis[k][j]; printf("请输入点:"); scanf("%d", &i); for (j = 1; j <= d->ver; j++) { printf("%d到%d的最小值为%d\n",i,j, dis[i][j]); } } int main( ) { graph gt; creategraph(>); shortpath(>); return 0; } 想知道哪里错了,我觉得没有问题……麻烦解答一下
...全文
134 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 1 楼 fireyou的回复:
请描述你的错误是什么
信号延迟太久了……不好意思,就是这段代码在vc可以实现,在dev就不能实现……现在我已经改用vc了……
fireyou 2019-11-27
  • 打赏
  • 举报
回复
请描述你的错误是什么

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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