最短路径
来源:互联网 发布:消费积分软件 编辑:程序博客网 时间:2024/06/07 19:47
题: (1 2)(1 3)(1 4)(1 6)(2 6)(3 4)(3 5)(4 7)(5 7)(5 8)(6 8)(7 8)
从1出发,到8的最短路径
#include<stdio.h>#include<stdlib.h>#define size 100 //矩阵大小 typedef struct Node {int city;int pre;Node *next;}Node;void jz(int m[size][size],int number)//构造邻接矩阵 {int a,b;printf("请输入道路,例如a b为a b之间有道路\n");printf("输入0 0结束输入\n")scanf("%d %d",&a,&b);while(!(a==0&&b==0)) //有向图,可控制是有向图还是无向图 {m[a][b]=1; m[b][a]=1;scanf("%d %d",&a,&b);} }void No(Node &Dui)//创建队列 {Dui.next=(Node *)malloc(size * sizeof(Node));}int search(int qh,int qe,Node &sq,int visited[],int m[size][size],int n,int chu,int zhong)//chu为开始城市 //zhong为终点城市 {qh=chu-1; qe=chu;sq.next[chu].city=chu;sq.next[chu].pre=0;visited[chu]=1;//当队不空while(qh!=qe){//结点出队 qh=qh+1;//初始城市为1 //加入结点for(int i=1;i<=n;i++){if(m[sq.next[qh].city][i]==1&&visited[i]==0){// 结点入队qe=qe+1;sq.next[qe].city=i; sq.next[qe].pre=qh;visited[i]=1;}if(sq.next[qe].city==zhong)//是否找到城市8 {printf("路径为(倒序路径):\n");printf("%d",sq.next[qe].city);while(sq.next[qe].pre>0){qe=sq.next[qe].pre;printf("--%d",sq.next[qe].city);} return 0;} } } }int main(){int qh;//队首下标 int qe;//队尾下标 int m[size][size];printf("输入顶点数量\n");int number;scanf("%d",&number);printf("输入开始城市,和终点城市\n");int chu,zhong;scanf("%d %d",&chu,&zhong);jz(m,number);Node Dui;No(Dui);int visited[size]; search(qh,qe,Dui,visited,m,number,chu,zhong);//查找最短路径 return 0;}
0 0
- 最短路径算法
- 最短路径算法
- 最短路径理解
- 最短路径算法
- 最短路径算法
- 最短路径问题
- 最短路径
- 最短路径
- 最短路径算法
- 图@ 最短路径
- 最短路径
- 最短路径算法
- 最短路径
- hdu2544(最短路径)
- 最短路径问题
- 最短路径问题
- 最短路径算法
- 最短路径算法
- c字符
- POJ 1287
- Studio 中 debug的使用
- self和super的深入解析
- VC 多个定时器
- 最短路径
- Jdbc封装(MySql)
- 清华梦的粉碎—写给清华大学的退学申请 /王垠
- 深入理解计算机系统:优化程序性能
- 前端(1)---浏览器兼容
- Spring scope属性详解
- ARM内存读取与MMU
- frameset内嵌框架集
- minJump