数据结构实验七图的创建与遍历.doc

上传人:豆**** 文档编号:28433846 上传时间:2022-07-28 格式:DOC 页数:5 大小:156KB
返回 下载 相关 举报
数据结构实验七图的创建与遍历.doc_第1页
第1页 / 共5页
数据结构实验七图的创建与遍历.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《数据结构实验七图的创建与遍历.doc》由会员分享,可在线阅读,更多相关《数据结构实验七图的创建与遍历.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date数据结构实验七图的创建与遍历实验要求与规范实验七 图的创建与遍历实验目的: 通过上机实验进一步掌握图的存储结构及基本操作的实现。实验内容与要求: 要求: 能根据输入的顶点、边/弧的信息建立图; 实现图中顶点、边/弧的插入、删除; 实现对该图的深度优先遍历;实现对该图的广度优先遍历。备注:单号基于邻接矩阵,双号基于邻接表存储结构实现上述操作。算法设计:-#include

2、 #include #define INFINITY 32767 #define MAX_VEX 20 /最大顶点个数 #define QUEUE_SIZE (MAX_VEX+1) /队列长度 using namespace std; bool *visited; /访问标志数组/图的邻接矩阵存储结构 typedef structchar *vexs; /顶点向量 int arcsMAX_VEXMAX_VEX; /邻接矩阵 int vexnum,arcnum; /图的当前顶点数和弧数 Graph; /队列类 class Queuepublic:void InitQueue() base=(in

3、t *)malloc(QUEUE_SIZE*sizeof(int); front=rear=0; void EnQueue(int e) baserear=e; rear=(rear+1)%QUEUE_SIZE; void DeQueue(int &e) e=basefront; front=(front+1)%QUEUE_SIZE; public: int *base; int front; int rear; ; /图G中查找元素c的位置 int Locate(Graph G,char c)for(int i=0;iG.vexnum;i+)if(G.vexsi=c) return i; r

4、eturn -1; void CreateUDN(Graph &G) /创建无向网int i,j,w,s1,s2; char a,b,temp; printf(输入顶点数和弧数:); scanf(%d%d,&G.vexnum,&G.arcnum); temp=getchar(); /接收回车 G.vexs=(char *)malloc(G.vexnum*sizeof(char); /分配顶点数目 printf(输入%d个顶点.n,G.vexnum); for(i=0;iG.vexnum;i+) /初始化顶点 printf(输入顶点%d:,i); scanf(%c,&G.vexsi); temp

5、=getchar(); /接收回车 for(i=0;iG.vexnum;i+) /初始化邻接矩阵 for(j=0;jG.vexnum;j+) G.arcsij=INFINITY; printf(输入%d条弧.n,G.arcnum); for(i=0;i=0 & kG.vexnum) /k合理 for(int i=0;i=0 & i=0 & jG.vexnum) /i,j合理for(int k=j+1;kG.vexnum;k+) if(G.arcsik!=INFINITY) return k; return -1; void DFS(Graph G,int k) /深度优先遍历int i; if

6、(k=-1) /第一次执行DFS时,k为-1 for(i=0;i=0;i=NextVex(G,k,i) if(!visitedi) DFS(G,i); /对k的尚未访问的邻接顶点i递归调用DFS void BFS(Graph G) /广度优先遍历int k; Queue Q; /辅助队列Q Q.InitQueue(); for(int i=0;i=0;w=NextVex(G,k,w) if(!visitedw) /w为k的尚未访问的邻接顶点 visitedw=true; printf(%c ,G.vexsw); Q.EnQueue(w); void main()int i; Graph G; CreateUDN(G); visited=(bool *)malloc(G.vexnum*sizeof(bool); printf(n广度优先遍历: ); for(i=0;iG.vexnum;i+)visitedi=false; DFS(G,-1); printf(n深度优先遍历: ); for(i=0;iG.vexnum;i+) visitedi=false; BFS(G);printf(n);实验结果:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁