数据结构图的实验报告.doc
《数据结构图的实验报告.doc》由会员分享,可在线阅读,更多相关《数据结构图的实验报告.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图的实验报告班级:电子091 学号:0908140620 姓名:何洁 编号:19(一)实验要求创建一个图。能够实现图的输入,插入顶点和边,利用队列进行深度和广度遍历。(二)需求分析功能:1,输入图的信息;2,插入一个顶点;3插入一个边;4,删除一个顶点;5,删除一个边;6,深度优先遍历;7,广度优先遍历;8退出。(三)概要设计本程序采用的是模板类,抽象数据类型有:T,E。类:template class Graphmtx friend istream & operator(istream& in,Graphmtx& G);friend ostream & operator(ostream& o
2、ut, Graphmtx& G);/输出public: Graphmtx(int sz=30, E max=0); /构造函数 Graphmtx () /析构函数 delete VerticesList; delete Edge; T getValue (int i) /取顶点 i 的值, i 不合理返回0 return i = 0 & i = numVertices ? VerticesListi : NULL; E getWeight (int v1, int v2) /取边(v1,v2)上权值 return v1 != -1 & v2 != -1 ? Edgev1v2 : 0; int
3、NumberOfEdges()return numEdges; /返回当前边数int NumberOfVertices()return numVertices; /返回当前顶点 int getFirstNeighbor (int v); /取顶点 v 的第一个邻接顶点 int getNextNeighbor (int v, int w); /取 v 的邻接顶点 w 的下一邻接顶点 bool insertVertex (const T& vertex); /插入顶点vertex bool insertEdge (int v1, int v2, E cost); /插入边(v1, v2),权值为c
4、ost bool removeVertex (int v); /删去顶点 v 和所有与它相关联的边 bool removeEdge (int v1, int v2); /在图中删去边(v1,v2)int getVertexPos (T vertex) /给出顶点vertex在图中的位置 for (int i = 0; i numVertices; i+) if (VerticesListi = vertex) return i; return -1; /int numVertexPos(T vertex);private:int maxVertices;int numEdges;int num
5、Vertices; T *VerticesList; /顶点表 E *Edge;/邻接矩阵const E maxWeight;(四)详细设计函数通过调用图类中的函数实现一些功能。头文件:#include#includeconst int maxSize=50;const int DefaultVertices=30; /最大顶点数(=n)const int maxWeight=50;其中顺序队列的实现:templateclass SeqQueue/循环队列的类的定义public:SeqQueue(int sz=10); /构造函数SeqQueue()delete elements; /析构函数
6、bool EnQueue(const T& x);/若队列不满,则将X进队,否则队溢出处理bool DeQueue(T& x);/若队列不为空,则函数返回TRUE及对头元素的值,否则返回FALSEvoid makeEmpty()front=rear=0;/置空操作:对头指针和队尾指针置0bool IsEmpty()constreturn(front=rear)?true:false;/判队列空否,若队列空,则函数返回TRUE,否则返回FALSEbool IsFull()constreturn(rear+1)%maxSize=front)?true:false;/判队列满否,若队列满,则函数返回
7、TRUE,否则返回FALSEprotected:int rear,front; /对头和队尾指针T *elements; /存放队列元素的数组int maxSize; /队列最大可容纳元素个数;templateSeqQueue:SeqQueue(int sz):front(0),rear(0),maxSize(sz)/建立最大具有Maxsize个元素的空队列elements=new TmaxSize; /创建队列空间assert(elements!=NULL); /断言:动态存储分配成功与否 templatebool SeqQueue:EnQueue(const T& x)/若队列不满,则将元
8、素X插入到该队列的队尾,否则出错处理if(IsFull()=true)return false; /队列满则插入失败,返回elementsrear=x; /按照队尾指针指示位置插入rear=(rear+1)%maxSize; /队尾指针加1return true; /插入成功templatebool SeqQueue:DeQueue(T& x)/若队列不空则函数推掉一个对头元素并返回TRUE,否则函数返回FALSEif(IsEmpty()=true)return false; /若队列空则删除失败,返回x=elementsfront;front=(front+1)%maxSize; /对头指针
9、加1return true; /删除成功类的实现:template Graphmtx:Graphmtx(int sz, E max):maxWeight(max) /构造函数 maxVertices=sz; numVertices=0; numEdges=0;int i, j;VerticesList = new TmaxVertices; /创建顶点表 Edge = (int *) new int *maxVertices;for (i = 0; i maxVertices; i+) Edgei = new intmaxVertices; /邻接矩阵 for (i = 0; i maxVer
10、tices; i+) /矩阵初始化 for (j = 0; j maxVertices; j+)Edgeij=(i=j)?0:maxWeight; template int Graphmtx:getFirstNeighbor (int v) /给出顶点位置为v的第一个邻接顶点的位置, /如果找不到, 则函数返回-1 if (v != -1) for (int col = 0; col numVertices; col+) if (Edgevcol & Edgevcol maxWeight) return col; return -1;template int Graphmtx:getNextN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 结构图 实验 试验 报告 讲演 呈文
限制150内