c语言描述之广度优先搜索——无权最短路径
来源:互联网 发布:打字软件免费下载 编辑:程序博客网 时间:2024/05/29 16:26
广度优先搜索(bfs)是图遍历的一种方式,广度优先搜索的方法是从一个初始点v1开始,依次遍历所有与v1相邻且没有被标记的所有顶点,之后通过把相邻的顶点(v2,v3,v4)作为下一条边开始的顶点。循环遍历,直至所有节点都被遍历为止。
广度优先搜索很像是树的层序遍历。
#ifndef _adja_h#define _adja_hstruct Node;typedef struct Node *PNode;typedef struct Node{int x;PNode next;}*EdgeNode;typedef struct vertex {int adjvex;EdgeNode ele[12];}*List;void Adja(List L){EdgeNode S;int i,j,k;printf("please input information");for(k=1;k<=12;k++)L->ele[k]=NULL;while(i!=0&&j!=0){scanf("%d%d",&i,&j);S=malloc(sizeof(struct Node));S->x=j;S->next=L->ele[i];L->ele[i]=S;}}#endif为了方便以后使用邻接表,我把其设为了头文件,我建议设为头文件以后方便实用。
#include <stdio.h>#include <stdlib.h>#include "adja.h"typedef struct TableEntry{int Known;/*标记,判断当前顶点是否被遍历*/int Dist;/*距离,当前顶点与开始顶点的距离*/int Path;/*与当前节点连接构成边的顶点*/}*info;typedef struct array{info arr[12];}*Table;void Initialize(Table T) /*初始化*/{int i;for(i=1;i<=12;i++){T->arr[i]=(info)malloc(sizeof(struct TableEntry));T->arr[i]->Known=0;T->arr[i]->Dist=15;T->arr[i]->Path=0;}}void unweighed(Table T){int *A;List L;L=(struct vertex *)malloc(sizeof(struct vertex));Adja(L);/*引用邻接表*/int i,j,k,n;T->arr[1]->Dist=0;for(k=0;k<=5;k++)for(j=1;j<=12;j++){i=1;/*随着j的变更,让i重置,方便数组A[]存储顶点j的信息*/if(T->arr[j]->Known==0&&T->arr[j]->Dist==k){T->arr[j]->Known=1; /*寻找j的邻接顶点*/ while(L->ele[j]!=NULL){A[i]=L->ele[j]->x;i++;L->ele[j]=L->ele[j]->next;}for(n=1;n<i;n++){T->arr[(A[n])]->Dist=k+1; T->arr[(A[n])]->Path=j;}}}}int main(){Table T;int i,j;T=malloc(sizeof(struct array));Initialize(T);unweighed(T);for(i=1;i<=12;i++)printf("%d的距离%d\n",i,T->arr[i]->Dist);}
0 0
- c语言描述之广度优先搜索——无权最短路径
- 无权最短路径-广度优先搜索
- 无权最短路径-广度优先搜索
- 无权最短路径 广度优先搜索
- 迷宫最短路径 广度优先搜索—C
- 广度优先搜索之最短路径
- 无权最短路径BFS(广度优先搜索)算法(图论)
- 无权最短路径的求法--图的广度优先搜索
- 图论:最短路径:广度优先搜索(C语言实现)
- 最短路径算法-广度优先搜索
- 广度优先搜索 最短路径 队列
- 最短路径算法-广度优先搜索
- 数据结构与算法分析(Java语言描述)(29)—— 广度优先遍历与最短路径
- 最短路径算法之----广度优先
- 算法之------深度优先搜索DFS和广度优先搜索BFS(最短路径)
- 广度优先搜索 《挑战程序设计竞赛》——迷宫的最短路径
- 最短路径/广度优先
- 迷宫最短路径 --- 广度优先搜索(广搜)
- 中文编码方案
- 进程process与线程thread总结
- phalcon 编译问题
- php实现ocr文字识别
- 二叉树遍历-----前序后序迭代遍历的新思路
- c语言描述之广度优先搜索——无权最短路径
- 【机房收费系统】——回
- final/finally/finalize区别,中兴2014卷末题
- 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
- C语言实现快速排序
- scala 基础
- 黑马程序员——C语言结构体
- 创建一个用户
- 【白书之路】 1585 - Score 统计分数