图的邻接表存储实现及深度优先遍历.doc

上传人:工**** 文档编号:560295574 上传时间:2022-09-23 格式:DOC 页数:10 大小:110.51KB
返回 下载 相关 举报
图的邻接表存储实现及深度优先遍历.doc_第1页
第1页 / 共10页
图的邻接表存储实现及深度优先遍历.doc_第2页
第2页 / 共10页
图的邻接表存储实现及深度优先遍历.doc_第3页
第3页 / 共10页
图的邻接表存储实现及深度优先遍历.doc_第4页
第4页 / 共10页
图的邻接表存储实现及深度优先遍历.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《图的邻接表存储实现及深度优先遍历.doc》由会员分享,可在线阅读,更多相关《图的邻接表存储实现及深度优先遍历.doc(10页珍藏版)》请在金锄头文库上搜索。

1、第四次实验报告 图的邻接表存储实现及深度优先遍历 学号0708140119 电子072 姓名 陆萍萍一、 问题描述1、 程序所能达到的基本功能 构建以邻接表形式存储的表及实现深度优先遍历并输出结果。 2、 输入的形式和输入值的范围: 根据提示进行输入:先输入要构建的表的结点数和边数,要求是整型;输入各结点的代号,这里用char型,也可在源程序中改变其它形式;输入各边的头结点和尾结点的代号;3、 输出的形式 若正常输入,则输出深度优先遍历的最后结果。用各结点的代码表示。测试数据要求第一组数据: 结点数和边数:4 4 结点名称:a b c d 边:a-b a-c b-c c-d 输出a-b-c-d

2、-over!第二组数据:图如下:输出a-b-c-d-e-f-g-over!4、 概要设计1、 抽象数据类型,它们的作用/图的结点类templateclass TVex;/图类templateclass Graph/链表存储2主程序流程及模块调用关系(1) 主程序模块: void main构造一个图,对T实例化(char)。调用Graph中的Create函数;调用Graph中的DFS函数;(2)调用关系如下TemplateTlinklistTemplateTvex TemplateGraph2、 核心算法的粗线条伪码 5、 详细设计(要求主要变量和语句加注释)1、 抽象数据类型的实现:包括类型定

3、义和各个操作的实现。1) TVex的详细设计(1)私有数据类型的定义private: T m_elem;TLinklist m_arcs; 2)Graph的详细设计(1)私有数据类型的定义private:TVex Vextexmaxnum;int vexnum;int arcnum;int kind;int symbolmaxnum;(2)公有函数成员的定义Graph();void Create();int LocateVex(T v);void DFS();void DFS_IN(int i); (3)具体实现 templatevoid Graph:Create() T v1,v2; int

4、 i,j; cout*基本信息*endl; coutvexnumarcnum; cout*结点*endl; for(int l=0;lvexnum;l+) cout请输入第l+1Vextexl.m_elem; cout*边数*endl; for(int k=0;karcnum;k+) cout请输入第k+1v1v2; i=LocateVex(v1); j=LocateVex(v2); Vextexi.m_arcs.InsertLate(j); Vextexj.m_arcs.InsertLate(i); cout*结果*endl;templateint Graph:LocateVex(T v)

5、for(int i=0;ivexnum&Vextexi.m_elem!=v;i+); if(i=vexnum) return -1; else return i;templatevoid Graph:DFS() DFS_IN(0);coutover!endl;templatevoid Graph:DFS_IN(int i)int index; symboli=1; coutVextexi.m_elem; for(int j=0;j+) index=Vextexi.m_arcs.GetElem(j+1); if(index!=-1) if(symbolindex!=1) DFS_IN(index

6、);else break; 2、 其他主要算法的实现将次要算法均设为Graph的公有函数成员3、 主程序的实现Void main()huffmanTree h;int *ww,n;char *cc;coutn;ww=new intn;cc=new charn;cout请依次输入节点名称和权重:endl;for(int i=1;i=n;i+)cout第i个endl;coutcci-1;coutwwi-1;h.CreatehuffmanTree(cc,ww,n);h.huffmanTreecoding();四 .调试分析1、 设计与调试过程中遇到的问题及分析、体会(1) 这个实验较简单,经过对书本上已经给出的c版程序的分析,很容易就写出了对整个实验的大体思路。(2) 这个程序不难,但前提是Tlinklist已经做得做够全面,在这个实验中发现了Tlinklist的很多不足,经过改进,才使得程序简单明了,如在其中增加了获取长度,获取数据,在链表麽增加数据几个函数,解决很多问题。(3) 该程序还有很大的可提升空间,比如用动态分配内存的方法实现结点的存储。(4) 从该程序中也学到很多,比如说对递归的熟练掌握;对判断条件的分析等。6、 测试结果列出几组输入和输出结果,输入集应多于需求分析的数据。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号