图的邻接表存储结构实验报告.doc

图的邻接表存储结构实验报告.doc

ID:55305335

大小:132.00 KB

页数:9页

时间:2020-05-09

图的邻接表存储结构实验报告.doc_第1页
图的邻接表存储结构实验报告.doc_第2页
图的邻接表存储结构实验报告.doc_第3页
图的邻接表存储结构实验报告.doc_第4页
图的邻接表存储结构实验报告.doc_第5页
资源描述:

《图的邻接表存储结构实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、《图的邻接表存储结构实验报告》1.需解决的的问题利用邻接表存储结果,设计一种图。2.数据结构的定义typedefstructnode{//边表结点intadj;//边表结点数据域structnode*next;}node;typedefstructvnode{//顶点表结点charname[20];node*fnext;}vnode,AList[M];typedefstruct{AListList;//邻接表intv,e;//顶点树和边数}*Graph;3.程序的结构图求个点度数退出程序下一次操作建立新图(有向或无向)根据序号求节点值选择操作菜单求第

2、一、二个邻接点的序号深度遍历广度遍历4.函数的功能1)建立无向邻接表GraphCreate1()//建立无向邻接表{GraphG;inti,j,k;node*s;G=malloc(M*sizeof(vnode));printf("输入图的顶点数和边数:");scanf("%d%d",&G->v,&G->e);//读入顶点数和边数for(i=0;iv;i++)//建立顶点表{printf("请输入图第%d个元素:",i+1);scanf("%s",&G->List[i].name);//读入顶点信息G->List[i].fnext=NULL;/

3、/边表置为空表}for(k=0;ke;k++)//建立边表--建立了2倍边的结点{printf("请输入边的两顶点序号:(从0考试)");scanf("%d%d",&i,&j);//读入边(Vi,Vj)的顶点对序号s=(node*)malloc(sizeof(node));//生成边表结点s->adj=j;s->next=G->List[i].fnext;G->List[i].fnext=s;//将新结点*s插入顶点Vi的边表头部s=(node*)malloc(sizeof(node));s->adj=i;//邻接点序号为is->next=G

4、->List[j].fnext;G->List[j].fnext=s;//将新结点*s插入顶点Vj的边表头部}returnG;}2)建立有向邻接图GraphCreate2()//有向邻接图{GraphG;inti,j,k;node*q;G=malloc(M*sizeof(vnode));printf("请输入顶点数和弧数:");scanf("%d%d",&G->v,&G->e);for(i=0;iv;i++)//建立有n个顶点的顶点表{printf("请输入图第%d个元素:",i+1);scanf("%s",&G->List[i].name)

5、;//读入顶点信息G->List[i].fnext=NULL;}for(k=0;ke;k++)//建立边表{printf("请输入两顶点的序号:(从0开始)");scanf("%d%d",&i,&j);q=(node*)malloc(sizeof(node));//生成新边表结点sq->adj=j;//邻接点序号为jq->next=G->List[i].fnext;G->List[i].fnext=q;}returnG;}3)输出无向图的邻接表voidPrint1(GraphG)//输出无向图的邻接表{inti;node*p;printf("

6、ttt邻接表");for(i=0;iv;i++){p=G->List[i].fnext;printf("ttt%d

7、%3s",i,G->List[i].name);while(p){printf("->%d",p->adj);p=p->next;}printf("");}}4)输出个元素的度数voidDu(GraphG)//输出各元素的度数{inti,j;node*p;printf("ttt各点度数");for(i=0;iv;i++){p=G->List[i].fnext;printf("tt

8、t顶点%2s的度为:",G->List[i].name);j=0;while(p){j++;p=p->next;}printf("%d",j);}}5)返回图结点在的序号intLocateVex(GraphG,char*u){//初始条件:图G存在,u和G中顶点有相同的特征//操作结果:若G中存在顶点u,则返回该顶点在图中的位置;否则返回-1inti;for(i=0;iv;++i)if(strcmp(u,G->List[i].name)==0)returni;return-1;}6)返回序号为v的图结点的值char*VertexGet(

9、GraphG,intv){if(v>=G->v

10、

11、v<0)exit(0);returnG->List[v].

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。