实验3图的建立与操作.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验3图的建立与操作

实验3 图的建立与操作 一、实验目的和要求 在熟悉图的存储、遍历、及其应用的基础上,通过键盘输入数据,建立一个无向图的邻接表,输出该邻接表,并计算每个顶点的度。达到巩固图的存储思想及其存储实现。 二、实验内容 完成下图的邻接表表示,并计算每个顶点的度。 附加要求:进行深度优先和广度优先遍历 三、实验提示 1.类型定义(邻接表存储) #define MAX_VERTEX_NUM 8 //顶点最大个数 typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; int weight; //边的权 }ArcNode; //表结点 #define VertexType char //顶点元素类型 typedef struct VNode { int degree;//顶点的度,入度 VertexType data; ArcNode *firstarc; }VNode/*头结点*/,AdjList[MAX_VERTEX_NUM]; typedef struct{ AdjList vertices; int vexnum,arcnum;//顶点的实际数,边的实际数 }ALGraph; 2.实验步骤 1)输入图中顶点信息,完成邻接表的VNode内容的初始化。 2)根据图中边的信息,把各边的信息链到firstarc指针链上,同时统计degree 3)输出邻接表。 代码 #include stdafx.h #includecstdlib #includeiostream #define WeightMax 100 #define UNDRIECT #define MAXDATA 100 #define MAXVEX 10 //#define WEIGHTTREE ////////////////////////////////////// using namespace std; /////////////////////////////////////////// //////////////////////////////////////////// typedef char DataType; struct ENode { int tailvex,headvex; int weight; struct ENode *tailnext,*headnext; }; struct VerNode { DataType data; ENode *firstin; ENode *firstout; }; //typedef VerNode AdjList[MAXVEX]; struct MGraphs{ VerNode adjList[MAXVEX]; //ENode *edgeList[MAXVEX][MAXVEX]; int numNode,numEdge; }; ////////////////////////////////////// /////////////////////////////////// int LocateVex(MGraphs G,DataType data) { int i=0; for( i=0;iG.numNode;++i) {if(G.adjList[i].data==data) return i; } return -1; } //////////////////////////////////////// ////////////the build graph//////////////// //////////////one construct////////////////////// void CreatALGraph(MGraphs G) { int weight; int i,j; DataType vi,vj; ENode *e; coutplease input the numNode and numEdgeendl; cinG.numNodeG.numEdge; coutplese input the node informationendl; for(i=0;iG.numNode;i++) { cinG.adjList[i].data; G.adjList[i].firstin=NULL; G.adjList[i].firstout=NULL; } fo

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档