欢迎来到天天文库
浏览记录
ID:49547630
大小:87.50 KB
页数:10页
时间:2020-03-02
《数据结构--图的实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.图的实验报告班级:电子091学号:0908140620姓名:何洁编号:19(一)实验要求创建一个图。能够实现图的输入,插入顶点和边,利用队列进行深度和广度遍历。(二)需求分析功能:1,输入图的信息;2,插入一个顶点;3插入一个边;4,删除一个顶点;5,删除一个边;6,深度优先遍历;7,广度优先遍历;8退出。(三)概要设计本程序采用的是模板类,抽象数据类型有:T,E。类:templateclassGraphmtx{friendistream&operator>>(istream&in,Graphmtx&G);friendostream&op
2、erator<<(ostream&out,Graphmtx&G);//输出public:Graphmtx(intsz=30,Emax=0);//构造函数~Graphmtx()//析构函数{delete[]VerticesList;delete[]Edge;}TgetValue(inti){//取顶点i的值,i不合理返回0returni>=0&&i<=numVertices?VerticesList[i]:NULL;}EgetWeight(intv1,intv2){//取边(v1,v2)上权值returnv1!=-1&&v2!=-1?Edge[v1][v2]:0;}int
3、NumberOfEdges(){returnnumEdges;}//返回当前边数intNumberOfVertices(){returnnumVertices;}//返回当前顶点intgetFirstNeighbor(intv);//取顶点v的第一个邻接顶点intgetNextNeighbor(intv,intw);//取v的邻接顶点w的下一邻接顶点boolinsertVertex(constT&vertex);//插入顶点vertexboolinsertEdge(intv1,intv2,Ecost);//插入边(v1,v2),权值为cost范文..boolremoveVerte
4、x(intv);//删去顶点v和所有与它相关联的边boolremoveEdge(intv1,intv2);//在图中删去边(v1,v2)intgetVertexPos(Tvertex){//给出顶点vertex在图中的位置for(inti=0;i5、接矩阵constEmaxWeight;};(四)详细设计函数通过调用图类中的函数实现一些功能。头文件:#include#includeconstintmaxSize=50;constintDefaultVertices=30;//最大顶点数(=n)constintmaxWeight=50;其中顺序队列的实现:templateclassSeqQueue{//循环队列的类的定义public:SeqQueue(intsz=10);//构造函数~SeqQueue(){delete[]elements;}//析构函数boolEnQ6、ueue(constT&x);//若队列不满,则将X进队,否则队溢出处理boolDeQueue(T&x);范文..//若队列不为空,则函数返回TRUE及对头元素的值,否则返回FALSEvoidmakeEmpty(){front=rear=0;}//置空操作:对头指针和队尾指针置0boolIsEmpty()const{return(front==rear)?true:false;}//判队列空否,若队列空,则函数返回TRUE,否则返回FALSEboolIsFull()const{return((rear+1)%maxSize==front)?true:false;}//判队列满否,7、若队列满,则函数返回TRUE,否则返回FALSEprotected:intrear,front;//对头和队尾指针T*elements;//存放队列元素的数组intmaxSize;//队列最大可容纳元素个数};templateSeqQueue::SeqQueue(intsz):front(0),rear(0),maxSize(sz){//建立最大具有Maxsize个元素的空队列elements=newT[maxSize];//创建队列空间assert(ele
5、接矩阵constEmaxWeight;};(四)详细设计函数通过调用图类中的函数实现一些功能。头文件:#include#includeconstintmaxSize=50;constintDefaultVertices=30;//最大顶点数(=n)constintmaxWeight=50;其中顺序队列的实现:templateclassSeqQueue{//循环队列的类的定义public:SeqQueue(intsz=10);//构造函数~SeqQueue(){delete[]elements;}//析构函数boolEnQ
6、ueue(constT&x);//若队列不满,则将X进队,否则队溢出处理boolDeQueue(T&x);范文..//若队列不为空,则函数返回TRUE及对头元素的值,否则返回FALSEvoidmakeEmpty(){front=rear=0;}//置空操作:对头指针和队尾指针置0boolIsEmpty()const{return(front==rear)?true:false;}//判队列空否,若队列空,则函数返回TRUE,否则返回FALSEboolIsFull()const{return((rear+1)%maxSize==front)?true:false;}//判队列满否,
7、若队列满,则函数返回TRUE,否则返回FALSEprotected:intrear,front;//对头和队尾指针T*elements;//存放队列元素的数组intmaxSize;//队列最大可容纳元素个数};templateSeqQueue::SeqQueue(intsz):front(0),rear(0),maxSize(sz){//建立最大具有Maxsize个元素的空队列elements=newT[maxSize];//创建队列空间assert(ele
此文档下载收益归作者所有