数据结构实验- 图.doc

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

实验7 图 1 实验要求 编写图输入输出的重载操作,深度优先遍函数,广度优先遍历函数,取顶点的第一个邻接顶点函数,取顶点的邻接顶点的下一个邻接顶点函数,顶点的插入函数,边的插入函数,顶点的删除函数,边的删除函数。 2 简单的需求分析 1,该程序的描述是:建立一个循环队列类,一个用邻接矩阵表示的图类,最后在主函数中调用图的输入重载操作建立一个图的对象,并且分别调用深度优先遍历函数,广度优先遍历函数,取顶点的第一个邻接顶点函数,取顶点的邻接顶点的下一个邻接顶点函数,顶点的插入函数,边的插入函数,顶点的删除函数,边的删除函数,以及图的输出重载操作,输出各自对应的结果。 2,程序运行后,首先要求用图的邻接矩阵表示建立图,即逐步输入图的顶点数,图的边数,图的顶点信息,图的端点信息,之后会出现所建立的图的信息,并出现一个界面,要求用户选择自己所要做的操作。然后程序会输出各个操作所对应的内容: 选择1,程序输出请输入要从哪个顶点开始深度优先遍历:,用户输入顶点后,程序会输出图的深度优先遍历,之后继续提示用户选择上面的选项(1~9)。 选择2,程序输出请输入要从哪个顶点开始广度优先遍历:,用户输入顶点后,程序会输出图的广度优先遍历,之后继续提示用户选择上面的选项(1~9)。 选择3,程序输出输入所要操作的顶点:,用户输入顶点后,程序会输出该顶点的第一个邻接顶点,之后继续提示用户选择上面的选项(1~9)。 选择4,程序输出输入所要操作的顶点:,用户输入顶点后,程序会输出该顶点的邻接顶点的下一个邻接顶点,之后继续提示用户选择上面的选项(1~9)。 选择5,程序输出输入所要操作的顶点:,用户输入顶点后,程序会输出顶的插入后图的情况,之后继续提示用户选择上面的选项(1~9)。 选择6,程序输出输入所要操作的边:,用户输入边的两个顶点已经权值后,程序会输出插入边后图的情况,之后继续提示用户选择上面的选项(1~9)。 选择7,程序输出输入所要删去的顶点:,用户输入顶点后,程序会输出删去顶点后图的情况,之后继续提示用户选择上面的选项(1~9)。 选择8,程序输出输入所要删去的边:,用户输入边的两个顶点后,程序会输出删去边后图的情况,之后继续提示用户选择上面的选项(1~9)。 选择9,则程序退出。 3 概要设计 1、所用的抽象数据类型: (1)//循环队列的类定义 templateclass T class SeqQueue{ public: SeqQueue(int sz=10); //构造函数 ~SeqQueue(){delete[] elements;} //析构函数 bool EnQueue(const T x); //进队 bool DeQueue(T x); //出队 void input(); //建立循环队列 void output(); //遍历 bool IsEmpty()const{return(front==rear)?true:false;} protected: int rear,front; //队头与队尾指针 T* elements; //存放队列元素的数组 int maxSize; //队列最大容纳元素的个数 }; (2)//用邻接矩阵表示的图的类定义 templateclass T,class E class Graphmtx { friend istream operator (istream in,GraphmtxT, E G);//输入 friend ostream operator (ostream out, GraphmtxT, E G);//输出 public: Graphmtx(int sz=DefaultVertices); //构造函数 ~Graphmtx() //析构函数 {delete[]VerticesList;delete []Edge;} T getValue(int i) //取顶点i的值,i不合理返回0 {return i=0i=numVertices?VerticesList[i]:NULL;} E getWeight(int v1,int v2) //取边(v1,v2)的权值

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档