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

    数据结构实验---图的储存与遍历.doc

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

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

    数据结构实验---图的储存与遍历.doc

    数据结构课程实验报告学号: 姓名: 实验日期: 2016.1.7实验名称: 图的存贮与遍历一、实验目的掌握图这种复杂的非线性结构的邻接矩阵和邻接表的存储表示,以及在此两种常用存储方式下深度优先遍历(DFS)和广度优先遍历(BFS)操作的实现。二、实验内容与实验步骤题目1:对以邻接矩阵为存储结构的图进行DFS和BFS遍历问题描述:以邻接矩阵为图的存储结构,实现图的DFS和BFS遍历。基本要求:建立一个图的邻接矩阵表示,输出顶点的一种DFS和BFS序列。测试数据:V0V1V4V3V2如图所示题目2:对以邻接表为存储结构的图进行DFS和BFS遍历问题描述:以邻接表为图的存储结构,实现图的DFS和BFS遍历。基本要求:建立一个图的邻接表存贮,输出顶点的一种DFS和BFS序列。测试数据:如图所示1 010 3 3 4 V0V1V2V3V4三、附录: 在此贴上调试好的程序。#include<stdio.h>#include<malloc.h>#include<string.h>#define M 100 typedef struct node char vexM2; int edgeM M ; int n,e; Graph;int visitedM;Graph *Create_Graph() Graph *GA; int i,j,k,w; GA=(Graph*)malloc(sizeof(Graph);printf ("请输入矩阵的顶点数和边数(用逗号隔开):n");scanf("%d,%d",&GA->n,&GA->e);printf ("请输入矩阵顶点信息:n"); for(i = 0;i<GA->n;i+) scanf("%s",&(GA->vexi0),&(GA->vexi1); for (i = 0;i<GA->n;i+) for (j = 0;j<GA->n;j+) GA->edgeij = 0; for (k = 0;k<GA->e;k+) printf ("请输入第%d条边的顶点位置(i,j)和权值(用逗号隔开):",k+1); scanf ("%d,%d,%d",&i,&j,&w); GA->edgeij = w; return(GA);void dfs(Graph *GA, int v) int i; printf("%c%cn",GA->vexv0,GA->vexv1); visitedv=1; for(i=0; i<GA->n; i+) if (GA->edgevi=1 && visitedi=0) dfs(GA, i);void traver(Graph *GA) int i; for(i=0; i<GA->n; i+) visitedi=0; for(i=0; i<GA->n;i+) if(visitedi=0) dfs(GA, i);void bfs( Graph *GA, int v) int j,k,front=-1,rear=-1; int QM; printf("%c%cn",GA->vexv0,GA->vexv1); visitedv=1; rear=rear+1; Qrear=v; while (front!=rear) front=front+1;k=Qfront; for (j=0; j<GA->n; j+) if (GA->edgekj=1 && visitedj=0) printf("%c%cn",GA->vexj0,GA->vexj1); visitedj=1; rear=rear+1; Qrear=j; void traver1(Graph *GA) int i; for (i=0; i<GA->n;i+) visitedi=0; for (i=0; i<GA->n; i+) if (visitedi=0) bfs(GA, i); typedef struct NODE int adjvex; struct NODE *next; ENode;typedef struct NODE1 char vex2; ENode *first; VexNode;typedef struct FS1VexNode GLM;int bian,top;FS;FS *CreateGL( ) FS *kk=(FS *)malloc(sizeof(FS); int i,j,k; ENode *s; printf("请输入顶点数和边数(用逗号隔开):n"); scanf("%d,%d",&kk->top, &kk->bian); printf("请输入顶点信息:n"); for (i=0; i<kk->top; i+) scanf("%s",kk->GLi.vex); kk->GLi.first=NULL; printf("请输入边的信息(i,j):n"); for (k=0;k<kk->bian;k+) scanf("n%d,%d",&i,&j); s =(ENode*)malloc(sizeof(ENode); s->adjvex=j; s->next=kk->GLi.first; kk->GLi.first =s; return kk;void DFS(FS *kk, int v) ENode *w; int i; printf("%sn",kk->GLv.vex); visitedv=1; w=kk->GLv.first ; while (w!=NULL) i=w->adjvex; if (visitedi=0) DFS(kk,i); w=w->next; void TRAVER(FS *kk) int i; for(i=0; i<kk->top;i+) visitedi=0; for(i=0; i<kk->top; i+) if(visitedi=0) DFS(kk, i); void BFS(FS *kk, int v) int QM, front=-1,rear=-1; ENode *w; int i, k; printf("%sn",kk->GLv.vex); visitedv=1; rear=rear+1; Qrear=v; while (front!=rear) front=front+1; k=Qfront; w=kk->GLk.first; while(w!=NULL) i=w->adjvex; if( visitedi=0) visitedi=1; printf("%s",kk->GLi.vex); rear=rear+1; Qrear=i; w=w->next; void TRAVER1(FS *kk) int i; for(i=0; i<kk->top;i+) visitedi=0; for(i=0; i <kk->top;i+) if(visitedi=0) BFS(kk,i); int main() int i=0; Graph *p; FS *q; while(i=1) /*建立菜单*/char jz30="1.创建邻接矩阵"char jd30="2.邻接矩阵DFS遍历"char jb30="3.邻接矩阵BFS遍历"char bg30="4.创建邻接表"char bd30="5.邻接表DFS遍历"char bb30="6.邻接表BFS遍历"char tc30="7.退出"char mn30="菜单"int l=strlen(jd);int o=strlen(mn);int m,n;printf("n");for(m=0;m<=(2*l-o)/2;m+)printf(" ");printf("%s",mn);for(m=0;m<=(2*l-o)/2;m+)printf(" ");printf("n");for(m=0;m<=2*l;m+)printf("*");printf("n");printf("* %s *n* %s *n* %s *n* %s *n* %s *n* %s *n* %s *n",jz,jd,jb,bg,bd,bb,tc);for(m=0;m<=2*l;m+)printf("*");printf("n");/*选择功能*/printf("请输入所需功能序号:");scanf("%d",&n);switch(n) case 1: p=Create_Graph();break; case 2: traver(p);break; case 3: traver1(p);break; case 4: q=CreateGL();break; case 5: TRAVER(q);break; case 6: TRAVER1(q);break;case 7: return 0;default:printf("输入功能序号有误!n"); return 0;四、运行结果:在此把运行结果从屏幕上拷下来贴在此五、心得体会:测试数据要注意现实中矩阵是从1开始,而数组里是从0开始。

    注意事项

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

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




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

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

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

    收起
    展开