1、4 4 结点名称:a b c d 边:a-b a-c b-c c-d 输出a-b-c-d-over!第二组数据:图如下:输出a-b-c-d-e-f-g-over!4、 概要设计1、 抽象数据类型,它们的作用/图的结点类templateclass TVex;/图类class Graph/链表存储2主程序流程及模块调用关系(1) 主程序模块: void main构造一个图,对T实例化(char)。调用Graph中的Create函数;调用Graph中的DFS函数;(2)调用关系如下2、 核心算法的粗线条伪码 5、 详细设计(要求主要变量和语句加注释)1、 抽象数据类型的实现:包括类型定义和各个操作的
2、实现。1) TVex的详细设计(1)私有数据类型的定义private: T m_elem; TLinklist m_arcs;2)Graph的详细设计 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 i,j; coutvexnumar
3、cnum;*结点* for(int l=0;lvexnum;l+) 请输入第l+1个结点的代号 Vextexl.m_elem; *边数* for(int k=0;kk+) coutk+1v1v2; i=LocateVex(v1); j=LocateVex(v2); Vextexi.m_arcs.InsertLate(j); Vextexj.m_arcs.InsertLate(i);*结果*templateint GraphLocateVex(T v) for(int i=0;ivexnum&Vextexi.m_elem!=v;i+); if(i=vexnum) return -1; else
4、return i;DFS() DFS_IN(0);over!DFS_IN(int i) int index; symboli=1;Vextexi.m_elem for(int j=0;j+) index=Vextexi.m_arcs.GetElem(j+1); if(index!=-1) if(symbolindex!=1) DFS_IN(index); else break; 2、 其他主要算法的实现将次要算法均设为Graph的公有函数成员3、 主程序的实现Void main()huffmanTree h;int *ww,n;char *cc;coutn;ww=new intn;cc=new
5、 charn;请依次输入节点名称和权重:for(int i=1;=n;i+)第个 名称:cci-1; 权重:wwi-1;h.CreatehuffmanTree(cc,ww,n);h.huffmanTreecoding();四 .调试分析1、 设计与调试过程中遇到的问题及分析、体会(1) 这个实验较简单,经过对书本上已经给出的c版程序的分析,很容易就写出了对整个实验的大体思路。(2) 这个程序不难,但前提是Tlinklist已经做得做够全面,在这个实验中发现了Tlinklist的很多不足,经过改进,才使得程序简单明了,如在其中增加了获取长度,获取数据,在链表麽增加数据几个函数,解决很多问题。(3) 该程序还有很大的可提升空间,比如用动态分配内存的方法实现结点的存储。(4) 从该程序中也学到很多,比如说对递归的熟练掌握;对判断条件的分析等。6、 测试结果列出几组输入和输出结果,输入集应多于需求分析的数据。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1