图的邻接表存储实现及深度优先遍历Word下载.docx

上传人:b****5 文档编号:16822088 上传时间:2022-11-26 格式:DOCX 页数:8 大小:95.41KB
下载 相关 举报
图的邻接表存储实现及深度优先遍历Word下载.docx_第1页
第1页 / 共8页
图的邻接表存储实现及深度优先遍历Word下载.docx_第2页
第2页 / 共8页
图的邻接表存储实现及深度优先遍历Word下载.docx_第3页
第3页 / 共8页
图的邻接表存储实现及深度优先遍历Word下载.docx_第4页
第4页 / 共8页
图的邻接表存储实现及深度优先遍历Word下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

图的邻接表存储实现及深度优先遍历Word下载.docx

《图的邻接表存储实现及深度优先遍历Word下载.docx》由会员分享,可在线阅读,更多相关《图的邻接表存储实现及深度优先遍历Word下载.docx(8页珍藏版)》请在冰豆网上搜索。

图的邻接表存储实现及深度优先遍历Word下载.docx

44

结点名称:

abcd

边:

a-ba-cb-cc-d

输出a-b-c-d-over!

第二组数据:

图如下:

输出

a-b-c-d-e-f-g-over!

4、概要设计

1、抽象数据类型,它们的作用

//图的结点类

template<

classT>

classTVex

{};

//图类

classGraph

{}//链表存储

2主程序流程及模块调用关系

(1)主程序模块:

voidmain

{

构造一个图,对T实例化(char)。

调用Graph中的Create函数;

调用Graph中的DFS函数;

}

(2)调用关系如下

 

2、核心算法的粗线条伪码

5、详细设计(要求主要变量和语句加注释)

1、抽象数据类型的实现:

包括类型定义和各个操作的实现。

1)TVex的详细设计

(1)私有数据类型的定义

private:

Tm_elem;

TLinklist<

int>

m_arcs;

2)Graph的详细设计

TVex<

T>

Vextex[maxnum];

intvexnum;

intarcnum;

intkind;

intsymbol[maxnum];

(2)公有函数成员的定义

Graph();

voidCreate();

intLocateVex(Tv);

voidDFS();

voidDFS_IN(inti);

(3)具体实现

★template<

voidGraph<

:

Create()

Tv1,v2;

inti,j;

cout<

<

"

*********************基本信息*****************************"

endl;

请分别输入结点数和边数:

"

;

cin>

>

vexnum>

arcnum;

***********************结点***************************"

for(intl=0;

l<

vexnum;

l++)

{

请输入第"

l+1<

个结点的代号"

Vextex[l].m_elem;

}

***********************边数***************************"

for(intk=0;

k<

k++)

cout<

k+1<

边的头结点和尾结点"

cin>

v1>

v2;

i=LocateVex(v1);

j=LocateVex(v2);

Vextex[i].m_arcs.InsertLate(j);

Vextex[j].m_arcs.InsertLate(i);

************************结果**************************"

★template<

intGraph<

LocateVex(Tv)

for(inti=0;

i<

vexnum&

&

Vextex[i].m_elem!

=v;

i++);

if(i==vexnum)

return-1;

else

returni;

DFS()

DFS_IN(0);

over!

DFS_IN(inti)

intindex;

symbol[i]=1;

Vextex[i].m_elem<

-->

for(intj=0;

j++)

{

index=Vextex[i].m_arcs.GetElem(j+1);

if(index!

=-1)

{

if(symbol[index]!

=1)

DFS_IN(index);

}

else

break;

}

2、其他主要算法的实现

将次要算法均设为Graph的公有函数成员

3、主程序的实现

Voidmain()

huffmanTree<

char>

h;

int*ww,n;

char*cc;

cout<

请输入叶子节点的个数:

cin>

n;

ww=newint[n];

cc=newchar[n];

请依次输入节点名称和权重:

for(inti=1;

=n;

i++)

第"

个"

名称:

cc[i-1];

权重:

ww[i-1];

h.CreatehuffmanTree(cc,ww,n);

h.huffmanTreecoding();

四.调试分析

1、设计与调试过程中遇到的问题及分析、体会

(1)这个实验较简单,经过对书本上已经给出的c版程序的分析,很容易就写出了对整个实验的大体思路。

(2)这个程序不难,但前提是Tlinklist已经做得做够全面,在这个实验中发现了Tlinklist的很多不足,经过改进,才使得程序简单明了,如在其中增加了获取长度,获取数据,在链表麽增加数据几个函数,解决很多问题。

(3)该程序还有很大的可提升空间,比如用动态分配内存的方法实现结点的存储。

(4)从该程序中也学到很多,比如说对递归的熟练掌握;

对判断条件的分析等。

6、测试结果

列出几组输入和输出结果,输入集应多于需求分析的数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1