




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四 图的存储和应用(2课时)一、实验目的1. 掌握图的邻接矩阵和邻接表的存储;2. 掌握图的遍历算法、最小生成树和拓扑排序。二、实验要求1. 程序结构清晰、语句完整,包含有头文件和main函数;2. 格式正确,语句采用缩进格式;3. 运行结果正确,输入输出有提示,格式美观。三、实验设备、材料和工具1. 奔腾2计算机或以上机型2. turboc2,win-tc.四、实验内容1图的遍历算法的实现。(阅读理解图的遍历的程序,上机运行并分析结果。)2用邻接矩阵法创建一个有向网。五、根据实验过程填写下面内容第1程序: #define N 10#define INFINITY 32768#define True 1#define False 0#define Error -1#define Ok 1#include stdlib.h#include stdio.htypedef enumDG,DN,UDG,UDNGraphKind;typedef char VertexData;typedef struct ArcNode1int adj; ArcNode1;typedef structVertexData vexsN;ArcNode1 arcsNN;int vexnum1,arcnum1;GraphKind kind1;AdjMatrix;/*. */typedef struct ArcNode2int adjvex;struct ArcNode2 *nextarc; ArcNode2;typedef struct VertexNodeVertexData data;ArcNode2 *firstarc;VertexNode;typedef structVertexNode vertexN;int vexnum2,arcnum2;GraphKind kind2;AdjList;/*.*/typedef struct Nodeint data;struct Node *next;LinkQueueNode;typedef structLinkQueueNode *front;LinkQueueNode *rear;LinkQueue;int InitQueue(LinkQueue *Q)Q-front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode);if(Q-front!=NULL)Q-rear=Q-front;Q-front-next=NULL;return(True);else return(False);int EnterQueue(LinkQueue *Q,int x)LinkQueueNode *NewNode;NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode);if(NewNode!=NULL)NewNode-data=x;NewNode-next=NULL;Q-rear-next=NewNode;Q-rear=NewNode;return(True);else return(False);int DeleteQueue(LinkQueue *Q,int *x)LinkQueueNode *p;if(Q-front=Q-rear)return(False);p=Q-front-next;Q-front-next=p-next; if(Q-rear=p)Q-rear=Q-front;*x=p-data;free(p);return(True);int IsEmpty(LinkQueue *Q)if(Q-front=Q-rear)return(True);else return(False);/*.*/typedef struct node1char data;struct node1 *next;Node1, *LinkList1;typedef struct node2char data1;char data2;struct node2 *next;Node2, *LinkList2;int a2;int visitedN;int LocateVertex1(AdjMatrix *G1,VertexData v)int k,j=Error;for(k=0;kvexnum1;k+)if(G1-vexsk=v)j=k;break;return(j);int CreateUDG1(AdjMatrix *G1,LinkList1 *bt,LinkList2 *br)int i,j,k;Node1 *r,*p;Node2 *s,*q;VertexData v1,v2;(*bt)=(LinkList1)malloc(sizeof(Node1);(*br)=(LinkList2)malloc(sizeof(Node2);(*bt)-next=NULL;(*br)-next=NULL;r=*bt; s=*br;printf(ninput G-vexnum,G-arcnumn);scanf(%d,%d,&(G1-vexnum1),&(G1-arcnum1);getchar();a0=G1-vexnum1; a1=G1-arcnum1;for(i=0;ivexnum1;i+)for(j=0;jvexnum1;j+)G1-arcsij.adj=0;printf(input G-vexsn);for(i=0;ivexnum1;i+)scanf(%c,&(G1-vexsi);p=(Node1*)malloc(sizeof(Node1);p-data=G1-vexsi;p-next=NULL;r-next=p;r=p;getchar( );printf(input G v1,v2n);for(k=0;karcnum1;k+) scanf(%c,&v1);scanf(%c,&v2);getchar( );q=(Node2*)malloc(sizeof(Node2);q-data1=v1;q-data2=v2;q-next=NULL;s-next=q;s=q;i=LocateVertex1(G1,v1);j=LocateVertex1(G1,v2);G1-arcsij.adj=1;G1-arcsji.adj=1;return(Ok);/*.*/int LocateVertex2(AdjList *G2,VertexData v)int k,j=Error;for(k=0;kvexnum2;k+)if(G2-vertexk.data=v)j=k;break;return(j);int CreateUDG2(AdjList *G2,LinkList1 L,LinkList2 M)int i,j,k;/char ch;Node1 *m,*t;Node2 *n,*s;ArcNode2 *p,*r;VertexData v1,v2;G2-vexnum2=a0; G2-arcnum2=a1;for(i=0;ivexnum2;i+) m=L-next; t=m;G2-vertexi.data=t-data;L-next=L-next-next;free(m);G2-vertexi.firstarc=NULL;for(k=0;karcnum2;k+)s=M-next; n=s;v1=n-data1; v2=n-data2;M-next=M-next-next;free(s);i=LocateVertex2(G2,v1);j=LocateVertex2(G2,v2);if(G2-vertexi.firstarc=NULL)p=(ArcNode2*)malloc(sizeof(ArcNode2);if(p=NULL)return(False);G2-vertexi.firstarc=p;p-adjvex=j;p-nextarc=NULL;elser=G2-vertexi.firstarc;while(r-nextarc!=NULL)r=r-nextarc;p=(ArcNode2*)malloc(sizeof(ArcNode2);if(p=NULL)return(False);r-nextarc=p;p-adjvex=j;p-nextarc=NULL;if(G2-vertexj.firstarc=NULL)p=(ArcNode2*)malloc(sizeof(ArcNode2);if(p=NULL)return(False);G2-vertexj.firstarc=p;p-adjvex=i;p-nextarc=NULL;elser=G2-vertexj.firstarc;while(r-nextarc!=NULL)r=r-nextarc;p=(ArcNode2*)malloc(sizeof(ArcNode2);if(p=NULL)return(False);r-nextarc=p;p-adjvex=i;p-nextarc=NULL;return(Ok);/*.*/void Depth1(AdjMatrix g1,int vo)int vj;printf(%c,g1.vexsvo);visitedvo=True;for(vj=0;vjadjvex)Depth2(g2,p-adjvex);p=p-nextarc;void Breadth1(AdjMatrix g1,int vo)int vi,vj;LinkQueue Q;InitQueue(&Q);visitedvo=True;EnterQueue(&Q,vo);while(!IsEmpty(&Q)DeleteQueue(&Q,&vi);printf(%c,g1.vexsvi);for(vj=0;vjadjvex)visitedp-adjvex=True;EnterQueue(&Q,p-adjvex);p=p-nextarc;void Traverse1(AdjMatrix g1)int vi;for(vi=0;vig1.vexnum1;vi+)visitedvi=False;printf(nThe order of G1 Depthn);for(vi=0;vig1.vexnum1;vi+)if(!visitedvi)Depth1(g1,vi); printf(n);for(vi=0;vig1.vexnum1;vi+)visitedvi=False;printf(nThe order of G1 Breadthn);for(vi=0;vig1.vexnum1;vi+)if(!visitedvi)Breadth1(g1,vi); printf(n);void Traverse2(AdjList g2)int vi;for(vi=0;vig2.vexnum2;vi+)visitedvi=False;printf(nThe order of G2 Depthn);for(vi=0;vig2.vexnum2;vi+)if(!visitedvi)Depth2(g2,vi); printf(n);for(vi=0;vig2.vexnum2;vi+)visitedvi=False;printf(nThe order of G2 Breadthn);for(vi=0;vig2.vexnum2;vi+) if(!visitedvi)Breadth2(g2,vi); printf(n);main( ) LinkList1 L;LinkList2 M;AdjMatrix g1;AdjList g2;CreateUDG1(&g1,&L,&M);CreateUDG2(&g2,L,M);Traverse1(g1);Traverse2(g2);运行结果及分析:(画出输入的图)程序:2.#include stdlib.h#include stdio.h#define MAX_VERTEX_NUM 10 /*最多顶点个数*/#define INFINITY 32768 /*表示极大值,即*/#define True 1#define False 0#define Error -1#define Ok 1typedef enumDG, DN, UDG, UDN GraphKind; /*图的种类:DG表示有向图, DN表示有向网, UDG表示无向图, UDN表示无向网*/typedef char VertexData; /*假设顶点数据为字符型*/typedef struct ArcNodeint adj; /*对于无权图,用1或0表示是否相邻;对带权图,则为权值类型*/ ArcNode;typedef structVertexData vexsMAX_VERTEX_NUM; /*顶点向量*/ArcNode arcsMAX_VERTEX_NUMMAX_VERTEX_NUM; /*邻接矩阵*/int vexnum,arcnum; /*图的顶点数和弧数*/GraphKind kind; /*图的种类标志*/AdjMatrix; /*(Adjacency Matrix Graph)*/int LocateVertex(AdjMatrix *G,VertexData v) /*求顶点位置函数*/int j=Error,k;for(k=0;kvexnum;k+)if(G-vexsk
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学历类自考专业(法律)公司法-中国法律思想史参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)-劳动法参考题库含答案解析(5卷)
- 2025年学历类自考专业(工商企业管理)企业经营战略概论-企业管理概论参考题库含答案解析(5卷)
- 2025年学历类自考专业(国贸)国际商法-国际技术贸易参考题库含答案解析(5卷)
- 2025合同赔偿金上限是多少呢
- 2025年学历类自考专业(公共关系)传播学概论-广告运作策略参考题库含答案解析(5卷)
- 2025年学历类成考高起点数学(文史)-计算机基础参考题库含答案解析(5卷)
- 2025年物业与业委会签订合同
- 2025年医卫类微生物检验技术(师)相关专业知识-相关专业知识参考题库含答案解析(5卷)
- 2025年医卫类卫生人才评价-公共卫生管理(中级)参考题库含答案解析(5卷)
- 企业降本增效培训课件
- 八大员培训计划
- 托幼机构消毒课件
- 河北省危险性较大建设工程安全专项施工方案论证审查专家库
- 部编版一年级上册道德与法治全册教案
- 当代西方美学
- 五年级语文阅读理解十篇(含答案)
- 试验设计与数据处理-李云雁-全套323页ppt课件
- 焊研威达埋弧焊机小车A系列说明书
- 静脉血栓栓塞症抗凝治疗微循环血栓防治专家共识
- 商业银行资产减值准备计提管理办法
评论
0/150
提交评论