图的遍历实验报告(数据结构)

时间:2024.4.21

电子信息工程学系实验报告 ——适用于计算机课程

课程名称: 数据结构                            

实验项目名称: 图的遍历操作             实验时间:

班级:计应102             姓名:        学号:

                                                                                                                                             

实验目的:

掌握有向图和无向图的概念;掌握邻接矩阵和邻接链表建立图的存储结构;掌握DFS及BFS对图的遍历操作;了解图结构在人工智能、工程等领域的广泛应用。

实验内容:

题目:设计一个有向图和一个无向图,任选一种存储结构,完成有向图和无向图的DFS(深度优先遍历)和BFS(广度优先遍历)的操作。

要求:建立一个图的邻接矩阵表示,输出顶点的一种DFS和BFS遍历。

测试数据:

0 1 0 0 0

1 0 0 0 1

0 1 0 1 0

1 0 0 0 0

0 0 0 1 0

 

实验要求:

按要求编写实验程序,将实验程序调试运行,写出在各种图的遍历方法中,输入测试数据所得的结果,并提交实验报告,写出调试运行的分析和体会。

 

实验结果:

 

 

 

实验总结:

逻辑结构:邻接矩阵

Dfs遍历:利用了递归的方法,开始访问一个节点的邻接节点 再访问这个节点的邻接节点 然后再访问另外一个邻接节点、依次下去 得以访问所有的节点、

通过这次试验,熟悉了递归的使用、对图的遍历方式更加理解了、

BFS遍历:这里利用了队列这种数据结构,原理是先访问所有节点的全部邻接节点,再访问邻接节点的全部节点、这样一层层下去。

 

 

实验源代码

#include <iostream>

#include <queue>

#define N 5

using namespace std;

int vi[N];

void print(int i)

{

      printf("%c ",i+'a');

}

void connect(int a[N][N],int start)

{

      for(int i=0;i<N;++i)

      {

            if(vi[i]==0&&a[start][i]==1)

            {

                  print(i);

                  vi[i]=1;

                  connect(a,i);

            }

           

      }

}

void DFS(int a[N][N],int start)

{

      memset(vi,0,sizeof(vi));

      connect(a,start);

      for(int i=0;i<N;++i)

      {

            if(!vi[i])

            print(i);

      }   

}

void BFS(int a[N][N],int start)

{

      int d;

      memset(vi,0,sizeof(vi));

      queue<int> temp;

      temp.push(start);

      while(!temp.empty())

      {

            d=temp.front();

            temp.pop();

            print(d);

            vi[d]=1;

            for(int i=0;i<N;++i)

            {

                  if(vi[i]==0&&a[d][i]==1)

                        temp.push(i);

            }

      }

      for(int i=0;i<N;++i)

      {

            if(!vi[i])

            print(i);

      }   

}

int main()

{

      int a[N][N]={

            0,1,0,0,0,

            1,0,0,0,1,

            0,1,0,1,0,

            1,0,0,0,0,

            0,0,0,1,0,

      };

      printf("DFS遍历:");

      DFS(a,0);

      printf("\n");

      printf("BFS遍历:");

      BFS(a,0);

      printf("\n");

      return 0;

}


第二篇:数据结构图实验报告


更多相关推荐:
图的遍历实验报告

数据结构实验报告计科101冯康20xx00814128实验五图的基本操作一实验目的1使学生可以巩固所学的有关图的基本知识2熟练掌握图的存储结构3熟练掌握图的两种遍历算法二实验内容问题描述对给定图实现图的深度优先...

数据结构实验报告-图的遍历

数据结构验报告实验图的遍历一实验目的1理解并掌握图的逻辑结构和物理结构邻接矩阵邻接表2掌握图的构造方法3掌握图的邻接矩阵邻接表存储方式下基本操作的实现算法4掌握图的深度优先遍历和广度优先原理二实验内容1输入顶点...

数据结构课程实验(图的存储与遍历)

实验五图的存储与遍历1实验目的掌握图这种复杂的非线性结构的邻接矩阵和邻接表的存储表示以及在此两种常用存储方式下深度优先遍历dfs和广度优先遍历BFS操作的实现2实验预备知识1图的存储结构邻接矩阵表示法和邻接表表...

C++图的创建与遍历实验报告

实验五图的遍历及其应用实现一实验目的1熟悉图常用的存储结构2掌握在图的邻接矩阵和邻接表两种结构上实现图的两种遍历方法实现3会用图的遍历解决简单的实际问题二需求分析很多问题都是建立在图的遍历的基础上实现的所以必须...

数据结构图的遍历实验报告

题目:图的遍历的实现完成日期:20##.12.22一、需求分析1.本演示程序中,输入的数据类型均为整型数据,不允许输入字符等其他数据类型,且需要按照提示内容进行输入,成对的关系数据必须在所建立的图中已经存在对应…

实现图的遍历算法实验报告

实现图的遍历算法1需求分析对于下图G编写一个程序输出从顶点0开始的深度优先遍历序列非递归算法和广度优先遍历序列非递归算法2系统设计1用到的抽象数据类型的定义图的抽象数据类型定义ADTGraph数据对象VV是具有...

C++图的创建与遍历实验报告

数据结构集中上机试验报告学院计算机科学与技术专业计算机科学与技术学号00000000班级6姓名题目图的创建与遍历一需求分析很多问题都是建立在图的遍历的基础上实现的所以必须有一个程序能够实现将图进行广度和深度遍历...

图的遍历操作实验报告

图的遍历操作实验报告实验三图的遍历操作一目的掌握有向图和无向图的概念掌握邻接矩阵和邻接链表建立图的存储结构掌握DFS及BFS对图的遍历操作了解图结构在人工智能工程等领域的广泛应用二要求采用邻接矩阵和邻接链表作为...

图的遍历实验报告

课程实验报告课程名称实验项目名称专业班级姓名学号完成时间月实验5图的遍历问题一背景网络蜘蛛即WebSpider是一个很形象的名字把互联网比喻成一个蜘蛛网那么Spider就是在网上爬来爬去的蜘蛛网络蜘蛛是通过网页...

图的遍历实验报告

实验四图的遍历题目图及其应用图的遍历班级姓名学号完成日期一需求分析1问题描述很多涉及图上操作的算法都是以图的遍历操作为基础的试写一个程序演示在连通的无向图上访问全部结点的操作2基本要求以邻接表为存储结构实现连通...

实验十 二组分金属相图(预习报告)

实验十二组分金属相图一实验目的1用热分析法步冷曲线法侧相变点绘制BiCd二组分金属相图2掌握热电偶测量温度的基本原理以及数字控温仪和可控升降温电炉的基本原理和使用二实验原理热分析法是绘制相图的基本方法之一它是利...

实验 二组分固液金属相图的测绘

实验二组分固液金属相图的测绘I目的与要求一用热分析法测绘铅锡二元金属相图了解固液相图的特点二学会热电偶的制作标定和测温技术三掌握自动平衡记录仪的使用方法II基本原理一二组分固液相图人们常用图形来表示体系的存在状...

图的遍历实验报告(32篇)