哈夫曼树课程设计 - 范文中心

哈夫曼树课程设计

03/01

中南林业科技大学

课程设计报告

设计名称: 数据结构课程设计

姓 名: 王昆 学 号: 20094282

专业班级: 2009级软件工程

系 (院): 计算机与信息工程学院

设计时间: 2010~2011学年第二学期

设计地点: 电子信息楼 机房

数据结构课程设计报告 第 1 页,共 26页

数据结构课程设计报告 。第4页,共26 页二 概要设计程序流程图图 14

数据结构课程设计报告第5页,共26 页三 详细设计 1、哈夫曼树结点结构定义 、struct hfmnode { char nValue;//节点值 int weight;//权值 int pnIndex;//父结点下标 int lchildIndex,rchildIndex;//左右孩子的结点下标 };哈夫曼树类定义 class huffmanTree{ public: void code(char nvalue[],int w[],int n); //对叶子结点编码 void decode(char nvalue[],char hfmcode[],int n);//对叶子结点译码 void Output(huffmanTree ht,int n);//输出哈夫曼树 //private: hfmnode hfmNode[2000];//用数组存储哈夫曼结点 void creatHfmTree(char nvalue[],int w[],int n);//创建哈夫曼树 void select(int pos,int &nodeOne,int &nodeTwo);//查询最小的两个结点 };2、主要函数及相关功能 、1 在数组 hfmNode 中从 O 开始到 pos 位置,查找哈夫曼树外的权值最小的两个结点的位置 void huffmanTree::select(int pos,int &nodeOne,int &nodeTwo) 2 创建哈夫曼树,nvalue 是结点值,w 是权值,n 是叶子结点的个数 void huffmanTree::creatHfmTree(char nvalue[],int w[],int n) 3 求哈夫曼树的编码 nvalue 是结点值数组,w 是权值数组 n 是叶子结点的个数 void huffmanTree::code(char nvalue[],int w[],int n) 4 哈夫曼译码 nvalue 为结点值数组 hfmcode 为哈夫曼编码,n 个叶子结点 void huffmanTree::decode(char nvalue[],char hfmcode[],int n) 5 检查输入的字符值是否合法 bool isChar(const string& str) 6输出哈夫曼树,字符,权值,以及它对应的编码 void huffmanTree::Output(huffmanTree ht,int n)5

数据结构课程设计报告第6页,共26 页3、源程序 、#include using namespace std; struct hfmnode//哈夫曼树结点结构定义 { char nValue;//节点值 int weight;//权值 int pnIndex;//父结点下标 int lchildIndex,rchildIndex;//左右孩子的结点下标 }; class huffmanTree//哈夫曼树类定义 { public: void code(char nvalue[],int w[],int n); //对叶子结点编码 void decode(char nvalue[],char hfmcode[],int n);//对叶子结点译码 void Output(huffmanTree ht,int n);//输出哈夫曼树 //private: hfmnode hfmNode[2000];//用数组存储哈夫曼结点 void creatHfmTree(char nvalue[],int w[],int n);//创建哈夫曼树 void select(int pos,int &nodeOne,int &nodeTwo);//查询最小的两个结点 };//在数组 hfmNode 中从 O 开始到 pos 位置,查找哈夫曼树外的权值最小的两个结点的位置 void huffmanTree::select(int pos,int &nodeOne,int &nodeTwo) { long w1,w2; w1=w2=88888; for(int i=0;i

数据结构课程设计报告} for(int j=0;j

数据结构课程设计报告char *cd; cd=new char[n];//用于存储哈夫曼编码的动态空间 cd[n-1]='\0';//编码结束符第8页,共26 页cout

数据结构课程设计报告} cout

数据结构课程设计报告int n=5;//字符和权值个数 cout>n; char str['n']; // str[n-1]='\0'; char g; char str2[2000];//存储哈夫曼编码 int w[26]; huffmanTree obj; cout>str; //输入字符不合法 while(isChar(str)==0||strlen(str)!=n) { cout>str; } //////////////////////////////////////////// // Output(); //////////////////////////////////////////////第10页,共26 页int n=strlen(str); cout>w[i]; cout>m; switch(m) { case 0: { obj.creatHfmTree(str,w,n);10//

数据结构课程设计报告obj.Output(obj,n);///////////////////////////////////////////OUTput cout>str2; cout

数据结构课程设计报告第12页,共26 页四 设计与调试分析从上面的程序可以看出,有些地方时没有办法限制的,比如说输入整型变量的时候,没有办法限制其不能输入字符型。 在调试的过程中所遇到的问题很多。五 用户手册1 本程序可以在 vc++5.0 和 vc++6.0 的环境下运行。 2 在 vc 中创建一个工程,将源程序复制到.cpp 中,编译链接就可以。 3 选择编译、运行以后会出现运行界面,选择相应的选项,根据提示即可进行演示。界面如下:4、请如数字符集大小 n,就是要求用户输入哈夫曼树叶子结点的个数六 测试成果12

数据结构课程设计报告第13页,共26 页13

数据结构课程设计报告第14页,共26 页14

数据结构课程设计报告第15页,共26 页测试结束八.课程设计心得 课程设计心得15

数据结构课程设计报告 第 16 页,共 26 页 我相信经过短短几天除了吃饭,睡觉,上课就天天坐在电脑面前编程,那编程水平没有提高是绝对不可 能的,让你每天 24 小时有 18 个小时是坐在电脑面前编程,我相信,你一定会成为一出类拔萃的程序员。设计 心得,时间太短,忙不过来,同时要设计的东西太多,这个和知识学的不精也有关系,如果给充分的时间,我 相信没有什么解决不了的!谢谢老师的指导!16


相关内容

  • 哈夫曼编码译码器实验报告
    <数据结构>课程设计报告 QFileInfo hufFileInfo; }; HuffView负责具体画图 class HuffView : public QGraphicsView { Q_OBJECT public: exp ...
  • Huffman编码
    <信息论与信源编码>实验报告 1.实验目的 (1) 理解信源编码的基本原理: (2) 熟练掌握Huffman编码的方法: (3) 理解无失真信源编码和限失真编码方法在实际图像信源编码应用中的差异. 2.实验设备与软件 (1) P ...
  • 哈夫曼编码实验报告
    赫夫曼编码实验报告 一.实验内容 实现赫夫曼编码的算法 二.哈夫曼编码的实验步骤 1.输入n个信源符号及其对应的权值 2.利用select()函数找出权值最小的两个信源,并各自分配一个码元" 0"" 1&quo ...
  • 山西省太原市20**年届高三模拟考试(一)语文
    太原市2016届高三下学期模拟考试 语文试题 第Ⅰ卷 阅读题 甲 必考题 一.现代文阅读(9分,每小题3分) 阅读下面的文字,完成1-3题. 西汉和东汉各历时约两百年,中间经过新莽的中断15年,如果视为一个朝代,则它连亘4个多世纪,为上承秦 ...
  • 北邮期中信息论附加题实验报告
    信息论实验报告 3. Matlab 仿真实验:掷骰子游戏,每次同时抛掷两枚骰子,将两枚骰子点数的和作为游戏结果,重复抛掷 1000 次(视为 1000 次信源符号输出).要求: (1) 对 1000 次游戏结果进行逐符号二进制定长编码和译码 ...
  • 霍夫曼降解反应
    霍夫曼降解反应[编辑] (重定向自Hofmann降解反应) 霍夫曼降解反应(Hofmann降解)又称霍夫曼重排反应,是指一级酰胺在溴(或氯)和碱的作用下转变为少一个碳原子的伯胺的有机化学反应.[1][2][3] 这一反应以其发现者奥古斯特· ...
  • [数据结构]期末考试题及答案
    2011-2012学年第一学期期末考查 <数据结构>试卷 (答案一律写在答题纸上,在本试卷上做答无效) 一.选择(每题1分,共10分) 1. 长度为n 的线性表采用顺序存储结构,一个在其第i 个位置插入新元素的算法时间复杂度为( ...
  • 数据结构试卷(附答案)
    计算机专业数据结构试题 一.单选题(每小题2分,共12分) 1.在一个单链表HL 中,若要向表头插入一个由指针p 指向的结点,则执行( ) . A . HL =p : p 一>next=HL B . p 一>next=HL :H ...
  • 王羽佳与她的[幻想曲]
    多年前,青年钢琴家王羽佳演奏霍洛维茨改编的<卡门变奏曲>.席夫拉改编的<野蜂飞舞>.<闲聊波尔卡>的视频在各大网站传开.乐迷们无不讶异于这个来自中国的纤瘦女孩,在弹奏这些足以让大家"耳" ...