图形深度、广度优先算法.docVIP

  • 6
  • 0
  • 约2.52千字
  • 约 5页
  • 2017-06-24 发布于湖北
  • 举报
/*?----------------------------------------?*/ /*??图形的深度优先搜寻法????????????????????*/ /*?----------------------------------------?*/ void?dfs(int?current) { ???graph?ptr; ???visited[current]?=?1;???? /*记录已遍历*/ ???printf(顶点[%d]?,current);? /*印出遍历顶点值*/ ???ptr?=?head[current].nextnode;??/*顶点位置*/ ???while?(?ptr?!=?NULL?)? /*遍历至链表尾*/ ???{ ??????if?(?visited[ptr-vertex]?==?0?) /*如过没遍历过*/ ?????????dfs(ptr-vertex);???/*?递回遍历呼叫?*/ ??????ptr?=?ptr-nextnode;??/*?下一个顶点?*/ ???} } /*?----------------------------------------?*/ /*??主程式:?建立图形后,将遍历内容印出.??????*/ /*?----------------------------------------?*/ void?main() { ???graph?ptr; ???int?node[20][2]?=?{?{1,?2},?{2,?1},/*?边线数组*/ ???????????????{1,?3},?{3,?1}, ???????????????{2,?4},?{4,?2}, ???????????????{2,?5},?{5,?2}, ???????????????{3,?6},?{6,?3}, ???????????????{3,?7},?{7,?3}, ???????????????{4,?8},?{8,?4}, ???????????????{5,?8},?{8,?5}, ?????????????? {6,?8},?{8,?6}, ???????????????{7,?8},?{8,?7}}; ???int?i; ???for?(?i?=?1;?i?=?8;?i++?) ???{ ??????head[i].vertex?=?i;?? /*设定顶点值*/ ??????head[i].nextnode?=?NULL;?/*清除图形指标*/ ??????visited[i]?=?0;????? /*设定遍历初值*/ ???} ???creategraph(node,20);?? /*建立图形*/ ???printf(图形的邻接链表内容:\n); ???for?(?i?=?1;?i?=?8;?i++?) ???{ ??????printf(顶点%d?=,head[i].vertex);?/*顶点值*/ ??????ptr?=?head[i].nextnode; /*?顶点位置*/ ??????while?(?ptr?!=?NULL?)??/*遍历至链表尾*/ ??????{ ?????????printf(?%d?,ptr-vertex);?/*印出顶点内容*/ ?????????ptr?=?ptr-nextnode;??/*?下一个顶点*/ ??????} ??????printf(\n);?/*?换行*/ ???} ???printf(图形的深度优先遍历内容:\n); ???dfs(1);??/*?印出遍历过程*/ ???printf(\n);/*?换行?*/ } /*?========================================?*/ /*????图形的广度优先搜寻法??????????????????*/ /*?========================================?*/ #include?stdlib.h #define?MAXQUEUE?10???/*?伫列的最大容量*/ struct?node??/*?图形顶点结构宣告*/ { ???int?vertex;?/*?顶点资料 */ ???struct?node?*nextnode; /*?指下一顶点的指标 */ }; typedef?struct?node?*graph; /*?图形的结构新型态*/ struct?node?head[9];? /*?图形顶点结构数组*/ int?visited[9];? /*?遍历记录数组*/ int?queue[MAXQUEUE]; /*?伫列的数组宣告*/ int?front?=?-1;? /*?伫列的前端

文档评论(0)

1亿VIP精品文档

相关文档