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

    图的邻接表存储结构实验报告(共9页).doc

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

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

    图的邻接表存储结构实验报告(共9页).doc

    精选优质文档-倾情为你奉上图的邻接表存储结构实验报告1.需解决的的问题 利用邻接表存储结果,设计一种图。2.数据结构的定义typedef struct node/边表结点int adj;/边表结点数据域struct node *next;node;typedef struct vnode/顶点表结点char name20;node *fnext;vnode,AListM;typedef structAList List;/邻接表int v,e;/顶点树和边数*Graph;3.程序的结构图求个点度数退出程序下一次操作建立新图(有向或无向)根据序号求节点值选择操作菜单求第一、二个邻接点的序号深度遍历广度遍历4.函数的功能1)建立无向邻接表Graph Create1( )/建立无向邻接表Graph G;int i,j,k;node *s;G=malloc(M*sizeof(vnode);printf("输入图的顶点数和边数:");scanf("%d%d",&G->v,&G->e);/读入顶点数和边数for(i=0;i<G->v;i+)/建立顶点表printf("请输入图第%d个元素:",i+1);scanf("%s",&G->Listi.name);/读入顶点信息G->Listi.fnext=NULL;/边表置为空表for(k=0;k<G->e;k+)/建立边表-建立了2倍边的结点printf("请输入边的两顶点序号:(从0考试)");scanf("%d%d",&i,&j);/读入边(Vi,Vj)的顶点对序号s=(node *)malloc(sizeof(node);/生成边表结点s->adj=j;s->next=G->Listi.fnext;G->Listi.fnext=s;/将新结点*s插入顶点Vi的边表头部s=(node *)malloc(sizeof(node);s->adj=i;/邻接点序号为is->next=G->Listj.fnext;G->Listj.fnext=s;/ 将新结点*s插入顶点Vj的边表头部 return G;2)建立有向邻接图Graph Create2() /有向邻接图Graph G;int i,j,k;node *q;G=malloc(M*sizeof(vnode);printf("请输入顶点数和弧数:");scanf("%d%d",&G->v,&G->e); for (i=0;i<G->v;i+) /建立有n个顶点的顶点表printf("请输入图第%d个元素:",i+1);scanf("%s",&G->Listi.name); /读入顶点信息G->Listi.fnext=NULL; for (k=0;k<G->e;k+) /建立边表printf("请输入两顶点的序号:(从0开始)");scanf("%d%d",&i,&j); q=(node *)malloc(sizeof(node); /生成新边表结点sq->adj=j; /邻接点序号为jq->next=G->Listi.fnext; G->Listi.fnext=q; return G;3)输出无向图的邻接表void Print1(Graph G)/输出无向图的邻接表int i;node *p;printf("nttt邻接表n");for(i=0;i<G->v;i+)p=G->Listi.fnext;printf("ttt%d | %3s",i,G->Listi.name);while(p)printf("->%d",p->adj);p=p->next;printf("n");4)输出个元素的度数void Du(Graph G)/输出各元素的度数int i,j;node *p;printf("nttt各点度数n");for(i=0;i<G->v;i+)p=G->Listi.fnext;printf("ttt顶点%2s的度为:",G->Listi.name);j=0;while(p)j+;p=p->next;printf("%dn",j);5)返回图结点在的序号int LocateVex(Graph G,char *u)/初始条件:图G存在,u和G中顶点有相同的特征/操作结果:若G中存在顶点u,则返回该顶点在图中的位置;否则返回-1int i;for(i=0;i<G->v;+i)if(strcmp(u,G->Listi.name)=0)return i;return -1;6)返回序号为v的图结点的值char *VertexGet(Graph G,int v)if(v>=G->v|v<0)exit(0);return G->Listv.name;7)返回图结点v的第一个邻接顶点的序号int FirstAdjVex(Graph G,char *v)/初始条件:图G存在,v是G中的某个顶点/操作结果:返回v中第一个邻接顶点的序号。若顶点在G中没有邻接顶点/则返回-1node *p;int v1;v1=LocateVex(G,v);p=G->Listv1.fnext;if(p)return p->adj;elsereturn -1;8)找到图结点v的第二个邻接顶点的序号void NextAdjVex(Graph G,char *v,char *w)/初始条件:图G存在,v是G中某个顶点,w是v得邻接点/操作结果:输出v的(相对于w的)下一个邻接点的序号node *p;int v1,w1;v1=LocateVex(G,v);w1=LocateVex(G,w);p=G->Listv1.fnext;while(p&&p->adj!=w1)p=p->next;if(!p|!p->next)printf("没有第二个邻接点!n");elseprintf("第二个邻接点序号是:%dn",p->next->adj);9)深度优先遍历图void DFS(Graph G,int i,int flag)node *p;printf("%2s ",G->Listi.name);flagi=1;p=G->Listi.fnext;while(p)if(!flagp->adj)DFS(G,p->adj,flag);p=p->next;void DFSTravel(Graph G)/深度优先遍历int i;int flagM;/标志数组for(i=0;i<G->v;i+)flagi=0;for(i=0;i<G->v;i+)if(!flagi)DFS(G,i,flag);10)广度优先遍历void BFSTravel(Graph G)/广度优先遍历Queue Q;node *p;int i,j=0;int flagM;/标志数组Q=malloc(sizeof(M);InitQueue(Q);for(i=0;i<G->v;i+)flagi=0;for(i=0;i<G->v;i+)if(flagi=0)/此点未被访问flagi=1;printf("%2s ",G->Listi.name);Enter(Q,i);while(Q->front!=Q->rear)Leave(Q,j);/队头元素出队并置为jp=G->Listj.fnext;while(p!=NULL)if(flagp->adj=0)printf("%2s ",G->Listp->adj.name);flagp->adj=1;Enter(Q,p->adj);/ifp=p->next;/while/while/if5.输入/输出数据1)选择操作2)选择“1”然后输入“3 3”输入“a”,“b”,“c”输入“0 1”,“1 2”,“2 0”3)选择“2”跟选择“1”类似4)选择“3”5)选择“4”输入“1”6)选择“5”输入“a”7)选择“6”8)选择“7”9)选择“0”退出程序6.总结 此次实验要求熟练掌握关于图的各项基本操作,重点在利用邻接表存储图的结构,以及深度、广度优先遍历图的方法。专心-专注-专业

    注意事项

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

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




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

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

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

    收起
    展开