第十二周 项目三(2)图遍历算法实现

原创 2015年11月20日 08:23:51
/* 
Copyright(c)2015,烟台大学计算机学院 
All rights reserved. 
文件名称:test.cpp 
作者:杜佳丽 
完成日期:2015年11月20日 
问题描述:广度优先遍历——BFS 
*/

#include <stdio.h>
#include <malloc.h>
#include "graph.h"

void BFS(ALGraph *G, int v)
{
    ArcNode *p;
    int w,i;
    int queue[MAXV],front=0,rear=0; //定义循环队列
    int visited[MAXV];     //定义存放节点的访问标志的数组
    for (i=0; i<G->n; i++) visited[i]=0; //访问标志数组初始化
    printf("%2d",v);            //输出被访问顶点的编号
    visited[v]=1;                       //置已访问标记
    rear=(rear+1)%MAXV;
    queue[rear]=v;              //v进队
    while (front!=rear)         //若队列不空时循环
    {
        front=(front+1)%MAXV;
        w=queue[front];             //出队并赋给w
        p=G->adjlist[w].firstarc;   //找w的第一个的邻接点
        while (p!=NULL)
        {
            if (visited[p->adjvex]==0)
            {
                printf("%2d",p->adjvex); //访问之
                visited[p->adjvex]=1;
                rear=(rear+1)%MAXV; //该顶点进队
                queue[rear]=p->adjvex;
            }
            p=p->nextarc;       //找下一个邻接顶点
        }
    }
    printf("\n");
}


int main()
{
    ALGraph *G;
    int A[5][5]=
    {
        {0,1,0,1,0},
        {1,0,1,0,0},
        {0,1,0,1,1},
        {1,0,1,0,1},
        {0,0,1,1,0}
    };
    ArrayToList(A[0], 5, G);

    printf(" 由2开始广度遍历:");
    BFS(G, 2);

    printf(" 由0开始广度遍历:");
    BFS(G, 0);
    return 0;
}


运行结果:

2015年大二上-数据结构-图-1-(3)图遍历算法实现

测试时用的图是 /* *Copyright (c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:Annpion.cpp *作者:王耀鹏 *完成日期:2016年...
  • Annpion
  • Annpion
  • 2016年01月24日 11:15
  • 911

《数据结构实验3》--图的遍历操作

图的遍历操作 一、     实验目的: 该程序主要完成对图的创建,并实现图的深度优先遍历和广度优先遍历                                              ...
  • u013050857
  • u013050857
  • 2014年09月21日 20:36
  • 1055

关于图的遍历算法

前些天做算法设计实验,涉及到图的遍历的一些算法,由于数据结构是在去年学的,很多算法也有些记不清了,今天在网上看到了一篇好的博文,留作看吧. 转载自海子的: http://www.cnblogs.c...
  • u013518289
  • u013518289
  • 2015年11月28日 12:15
  • 2823

【经典算法】:图的遍历算法的实现

#include #include "StdAfx.h" #define MAX 20 #include "malloc.h" int visited[MAX]; //访问标志数组 ...
  • qq_23100787
  • qq_23100787
  • 2016年06月07日 15:53
  • 510

图的邻接矩阵存储结构的实现及其遍历

图的邻接矩阵存储结构是一个很容易理解的存储结构,用一个矩阵记录两个顶点之间的关系,对于无向无权图,用0和1来表示两个顶点之间是否相邻即可,对于无向有权图,使用一个整型来表示两个顶点之间的弧的权值即可。...
  • bobopeng
  • bobopeng
  • 2013年10月25日 16:23
  • 1302

图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS) 2015-04-08 16:15  图的遍历的定义:  从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次。(连通图与非连通图...
  • Jerry_Dui
  • Jerry_Dui
  • 2015年10月23日 10:06
  • 1617

第十二周--图--项目三-图遍历算法实现(2)

*计算机控制工程学院 *班级:计156-2 *姓名:陈飞 *问题及代码: #include"head.h" extern visited[MAXV]; void BFS(ALGraph *G...
  • CF2807451899
  • CF2807451899
  • 2016年11月17日 10:30
  • 130

【算法学习】图相关算法编程实现-深度优先遍历和广度优先遍历

一、图的表示 图G=(V,E)。要表示一个图,通常有两种方法:邻接表和邻接矩阵。两种方法都既可以表示有向图,也可以表示无向图。 邻接表表示由一个包含|V|个列表的数组组成,其中每个列表对应V中的一...
  • xiajun07061225
  • xiajun07061225
  • 2013年03月29日 08:54
  • 3675

Java实现图的遍历(深搜与广搜)

本文以邻接表作为存储结构,用Java实现图的遍历,话不多说,先给出的图的结构,如下: 深度优先搜索遍历 思想: 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索...
  • ZhuangM_888
  • ZhuangM_888
  • 2015年09月10日 12:22
  • 2274

采用邻接矩阵实现图的遍历

采用邻接矩阵实现图的遍历 (1)定义邻接矩阵的存储结构; (2)建立一个无向网G,如下图所示: (3)对G进行深度优先遍历,结出结果; (4)对G进行广度优先遍历,结出结果; ...
  • migu77777
  • migu77777
  • 2016年11月23日 09:24
  • 1393
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第十二周 项目三(2)图遍历算法实现
举报原因:
原因补充:

(最多只允许输入30个字)