当前位置:文档之家› 数据结构与算法分析》实验报告

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

《数据结构与算法分析》实验报告
姓名学号_ _____
__年__月__ __日
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<m;i++ TO
t[i].data=0;
t[i].lchild=0;
t[i].rchild=0;
t[i].prnt=0;
End FOR
输入结点值
FOR i=n;i<m;i++ TO
p1=0;p2=0;
small1=max;small2=max
FOR j=0;j<=i-1;j++ TO
IFt[j].prnt?=0
IF(t[j].data<small1)
small2=small1;
small1=t[j].data;
p2=p1;
p1=j;}
ELSE IF(t[j].data<small2)
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。

相关主题