欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构实验七图的创建与遍历(共3页).doc

    • 资源ID:8058130       资源大小:42.50KB        全文页数:3页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构实验七图的创建与遍历(共3页).doc

    精选优质文档-倾情为你奉上实验七 图的创建与遍历实验目的: 通过上机实验进一步掌握图的存储结构及基本操作的实现。实验内容与要求: 要求: 能根据输入的顶点、边/弧的信息建立图; 实现图中顶点、边/弧的插入、删除; 实现对该图的深度优先遍历;实现对该图的广度优先遍历。备注:单号基于邻接矩阵,双号基于邻接表存储结构实现上述操作。算法设计:专心-专注-专业#include <iostream> #include <malloc.h> #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=(int *)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;i<G.vexnum;i+)if(G.vexsi=c) return i; return -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;i<G.vexnum;i+) /初始化顶点 printf("输入顶点%d:",i); scanf("%c",&G.vexsi); temp=getchar(); /接收回车 for(i=0;i<G.vexnum;i+) /初始化邻接矩阵 for(j=0;j<G.vexnum;j+) G.arcsij=INFINITY; printf("输入%d条弧.n",G.arcnum); for(i=0;i<G.arcnum;i+)/初始化弧 printf("输入弧%d:",i); scanf("%c %c %d",&a,&b,&w); /输入一条边依附的顶点和权值 temp=getchar(); /接收回车 s1=Locate(G,a); s2=Locate(G,b); G.arcss1s2=G.arcss2s1=w; int FirstVex(Graph G,int k) /图G中顶点k的第一个邻接顶点if(k>=0 && k<G.vexnum) /k合理 for(int i=0;i<G.vexnum;i+)if(G.arcski!=INFINITY) return i; return -1; /图G中顶点i的第j个邻接顶点的下一个邻接顶点 int NextVex(Graph G,int i,int j)if(i>=0 && i<G.vexnum && j>=0 && j<G.vexnum) /i,j合理for(int k=j+1;k<G.vexnum;k+) if(G.arcsik!=INFINITY) return k; return -1; void DFS(Graph G,int k) /深度优先遍历int i; if(k=-1) /第一次执行DFS时,k为-1 for(i=0;i<G.vexnum;i+) if(!visitedi) DFS(G,i); /对尚未访问的顶点调用DFS elsevisitedk=true; printf("%c ",G.vexsk); /访问第k个顶点 for(i=FirstVex(G,k);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<G.vexnum;i+) if(!visitedi) /i尚未访问visitedi=true; printf("%c ",G.vexsi);Q.EnQueue(i); /i入列 while(Q.front!=Q.rear) Q.DeQueue(k); /队头元素出列并置为k for(int w=FirstVex(G,k);w>=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;i<G.vexnum;i+)visitedi=false; DFS(G,-1); printf("n深度优先遍历: "); for(i=0;i<G.vexnum;i+) visitedi=false; BFS(G);printf("n");实验结果:

    注意事项

    本文(数据结构实验七图的创建与遍历(共3页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开