




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验3 图的基本操作实验目的1. 掌握图的各种存储结构,特别要熟练掌握邻接矩阵和邻接表存储结构。2. 遍历是图各种应用的算法的基础,要熟练掌握图的深度优先遍历和广度优先遍历算法,复习栈和队列的应用。3. 掌握以邻接矩阵作为存储结构的生成图的最小生成树的普里姆算法。实验内容1. 输入顶点数、边数、每个顶点的值以及每一条边的信息,构造一个无向图G,并用邻接矩阵存储改图。 2. 输入顶点数、边数、每个顶点的值以及每一条边的信息,构造一个无向图G,并用邻接表存储该图 3. 深度优先遍历第一步中构造的图G,输出得到的节点序列函数说明1. typedef struct arc int adjvex; st
2、ruct arc *next;ArcNode;typedef struct VexNodeint vertex; ArcNode *firstarc;VerNode;typedef VerNode AdjListMAXNODE; /邻接表的结点类型 */2. void CreatAdjlist(AdjList GL) /* 建立图的邻接表 */3. void DfsAdjlist(AdjList GL,int v) /* 从初始点v出发深度优先遍历邻接表GL表示的图 */4. void BfsAdjlist(AdjList GL,int v) /*从初始点v出发广度优先遍历邻接表GL表示的图*
3、/实验过程实验代码#include #include #include using namespace std;typedef struct edgenodeint adjvex;edgenode *next;edgenode;/定义表结点typedef struct vexnodestring data;edgenode* link;vexnode, AdjList100;/定义头结点typedef structAdjList vertices;int vexnum, arcnum;ALGraph;/定义图int LocateVex(ALGraph G, string u)for(int i
4、=0; iG.vexnum; i+)if(G.verticesi.data=u)return i;return -1;/定位void Create(ALGraph &G)string v1, v2;int i, j, k; cout” 开始建图 “;coutG.vexnumG.arcnum; cout请输入点:;for(i=0; iG.verticesi.data;G.verticesi.link=NULL;cout输入边(V1,V2):;coutendl;for(k=0; kv1v2;i=LocateVex(G, v1);j=LocateVex(G, v2);edgenode *p=new
5、edgenode;p-adjvex=j;p-next=G.verticesi.link;G.verticesi.link=p; p=new edgenode;p-adjvex=i;p-next=G.verticesj.link;G.verticesj.link=p;/创建图int FirstAdjVex(ALGraph G, int v)edgenode *p=G.verticesv.link;if(p)return p-adjvex;elsereturn -1;/头与否,是的话返回nextint NextAdjVex(ALGraph G, int v, int w)edgenode* p=G
6、.verticesv.link;while(p) if(p-adjvex=w)break;p=p-next;if(p-adjvex!=w | !p-next)return -1;return p-next-adjvex;/下一个结点bool visited10;/数组,保存是否访问过void DFS(ALGraph G, int v)visitedv=true;coutG.verticesv.data=0; w=NextAdjVex(G, v, w) )if(!visitedw)DFS(G, w);/深度void DFSS(ALGraph G)for(int i=0; iG.vexnum; i
7、+)visitedi=false;for(i=0; iG.vexnum; i+)if(!visitedi)DFS(G, i);/深度优先准备与调用void BFS(ALGraph G)queue q;for(int i=0; iG.vexnum; i+)visitedi=false;for(i=0; iG.vexnum; i+)if(!visitedi)q.push(i);visitedi=true;while(!q.empty()int v=q.front();q.pop();coutG.verticesv.data=0; w=NextAdjVex(G, v, w)if (!visitedw)q.push(w);visitedw=true;/广度void main()ALGraph G;Create(G);cout深度优先遍历结果:endl;DFSS(G);coutendl;cout广度优先遍历结果:endl;BFS(G);coutendl;/主函数代码调试1.此时的edgenode前漏掉了new,所以表达非法;2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司经营拓展活动方案
- 公司职工小活动方案
- 公司节目拍摄策划方案
- 公司热爱劳动活动方案
- 公司组织室内活动方案
- 公司社交酒会策划方案
- 公司网络年会策划方案
- 公司爬圭峰山活动方案
- 公司普通聚餐活动方案
- 公司月动员会策划方案
- DL∕T 901-2017 火力发电厂烟囱(烟道)防腐蚀材料
- DL∕T 664-2016 带电设备红外诊断应用规范
- 河北省承德市平泉市2023-2024学年七年级下学期期末数学试题(无答案)
- DL-T448-2016电能计量装置技术管理规程
- 2024建筑工程劳务分包合同标准范本
- QB/T 2660-2024 化妆水(正式版)
- 《化工和危险化学品生产经营单位重大生产安全事故隐患判定标准(试行)》解读课件
- 数学分析教学课件
- 基于Python+MySQL的员工管理系统的设计与实现
- 拔丝生产企业管理制度
- 可视对讲及门禁的课程设计
评论
0/150
提交评论