数据结构与算法分析》实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构与算法分析》实验报告

姓名学号_ _____

__年__月__ __日

1. 上机题目:以静态链表为存储结构,编写给定权值

{7,19,2,6,32,3}构造哈夫曼树的算法。(输出以存储结构表示或以树型显示(90度旋转))

2.需求分析

(1)输入数据必须为int的整形数据,其数值范围为:-21474836~2147483647

(2)输出的数据格式为:%d

(3)测试数据的数据为:{7,19,2,6,32,3}

3.详细设计

(1)该程序采用顺序表的存储结构,其数据结构定义如下:#define n 6

#define m 2*n-1

#define max 100typedef struct

{int data;

int lchild,rchild,prnt;

}hufmtree;

所用数据类型中每个操作的伪码算法如下:

创建哈夫曼树

Program hufm(hufmtree t[m])

FOR i=0;i

t[i].data=0;

t[i].lchild=0;

t[i].rchild=0;

t[i].prnt=0;

End FOR

输入结点值

FOR i=n;i

p1=0;p2=0;

small1=max;small2=max

FOR j=0;j<=i-1;j++ TO

IFt[j].prnt?=0

IF(t[j].data

small2=small1;

small1=t[j].data;

p2=p1;

p1=j;}

ELSE IF(t[j].data

small2=t[j].data;

p2=j;

t[p1].prnt=i+1;

t[p2].prnt=i+1;

t[i].lchild=p1+1;

t[i].rchild=p2+1;

t[i].data=t[p1].data+t[p2].data;

END IF

END FOR

END Hufman

4.调试分析

(1)调试过程中主要遇到哪些问题?是如何解决的?

开始的时候main函数的数据结构类型定义的与主函数不同,而且缺少返回值,导致最后的结果陷入死循环,通过看书,向同学询问,得以解决。

(2)经验和体会

哈夫曼树又称最优二叉树,此次实验创建哈夫曼树算法,虽然依旧犯了不少错误,但仍解决了。在其中学习了很多,对树有了更深的了解。

5.测试结果

6.附件

见 20121183058詹奇.Cpp

相关文档
最新文档