数据结构实验四图的深度优先与广度优先遍历.doc

数据结构实验四图的深度优先与广度优先遍历.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验四图的深度优先与广度优先遍历

天津理工大学实验报告 学院(系)名称:计算机与通信工程学院 姓名 学号 专业 计算机科学与技术 班级 2009级班 2011年5月12日 第5-8节 实验地点 7号楼215 批改意见 成绩 教师签字: 实验四 图的深度优先与广度优先遍历 实验时间:2011年5月12日,12:50 -15:50(地点:7-215) 实验目的:理解图的逻辑特点;掌握理解图的两种主要存储结构深度优先遍历、广度优先遍历。1)问题描述:在主程序中提供下列菜单: 1…图的建立 2…深度优先遍历图 3…广度优先遍历图 0…结束 2)实验要求:图的存储可采用邻接表或邻接矩阵;定义下列过程: CreateGraph(): 按从键盘的数据建立图 DFSGrahp():深度优先遍历图 BFSGrahp():广度优先遍历图 实验报告格式及要求:按学校印刷的实验报告模版书写。(具体要求见四) 实验思路: 首先,定义邻接矩阵和图的类型,定义循环队列来存储,本程序中只给出了有向图的两种遍历,定义深度优先有哪些信誉好的足球投注网站和广度优先有哪些信誉好的足球投注网站的函数,和一些必要的函数,下面的程序中会有说明,然后是函数及运行结果! #includeiostream #includecstdlib using namespace std; #define MAX_VERTEX_NUM 20//最大顶点数 #define MaxSize 100 bool visited[MAX_VERTEX_NUM]; enum GraphKind{AG,AN,DG,DN};//图的种类,无向图,无向网络,有向图,有向网络 struct ArcNode{ int adjvex; ArcNode * nextarc; }; struct VNode{ int data; ArcNode * firstarc; }; struct Graph{ VNode vertex[MAX_VERTEX_NUM]; int vexnum,arcnum;//顶点数,弧数 GraphKind kind;//图的类型 }; struct SeqQueue{ int *base; int front,rear; }; SeqQueue InitQueue(){//循环队列初始化 SeqQueue Q; Q.base = new int; Q.front=0; Q.rear=0; return Q; } void DeQueue(SeqQueue Q,int u){//出队操作 u = *(Q.base+Q.front); Q.front = (Q.front+1)%MaxSize; } int QueueFull(SeqQueue Q){//判断循环队列是否满 return (Q.front==(Q.rear+1)%MaxSize)?1:0; } void EnQueue(SeqQueue Q,int x){//入队操作 if(QueueFull(Q)){ cout队满,入队操作失败!endl; exit(0); } *(Q.base+Q.rear) = x; Q.rear = (Q.rear+1)%MaxSize; } void CreateDG(Graph G,int n,int e){//初始化邻接表头结点 int j; for(int i=0;in;++i){ G.vertex[i].data=i;G.vertex[i].firstarc=NULL; } for(i=0;ie;++i){ cinij;//输入边的信息 ArcNode* s; s= new ArcNode; s-adjvex = j; s-nextarc = G.vertex[i].firstarc; G.vertex[i].firstarc = s; } } void Visit(Graph G,int u) { coutG.vertex[u].data ; } int FirstAdjVex(Graph G,int v){ if(G.vertex[v].firstarc) return G.vertex[v].firstarc-adjvex; else return -1; } int NextAdjVex(Graph G,int v,int w){ ArcNode* p = G.vertex[v].firstarc; while(p-adjvex!=w) p = p-nextarc; i

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档