数据结构课程设计-12月27日

明天起到星期四,是四天的数据结构的课程设计周,就又有记录的日志了。前提说好,一切以不上网参考不复制不利用其他现成代码为主,一定要自己动手,实在不行的地方记录下来,然后再参考。

先给出课程设计的题目:

题目设定:哈夫曼编/译码器                        

问题描述:

 利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。试为这样的信息收发站写一个哈夫曼的编/译码器。

设计要求:

1.建立哈夫曼树:读入文件(*.souce),统计文件中字符出现的频度,并以这些字符的频度作为权值,建立哈夫曼树。
2.编码:利用已建立好的哈夫曼树,获得各个字符的哈夫曼编码,并对正文进行编码,然后输出编码结果,并存入文件(*.code)中。
3.译码:利用已建立好的哈夫曼树将文件(*.code)中的代码进行译码,并输出译码结果,存入文件(*.decode)中。
4.利用位操作,实现文件的压缩与解压。(选作)

提交内容:

前期的设计方案(第18周周一提交)
   内容包括:所选的题目、使用的数据结构、主要功能模块的介绍等。
实验报告书面版(第19周周三交)
程序源代码及实验报告电子版(第19周周三交)


以上就是课程设计的基本内容。所以今天晚上要完成的就是——前期的设计方案。

.概要设计

  1)功能的模块图

void read();
void write();
void print();
int countChar(char x);
void CrtHuffmanTree(HuffmanTree ht,int w[ ],int n);
void CrtHuffmanCode(HuffmanTree ht,HuffmanCode hc,int n);
void Change();
void Translate();


  2)各个模块详细的功能描述


a)文本文件内容的读取  void read();

b)文本文件内容的写入 void write();

c)文本文件内容的输出 void print();

d)统计内容中各字符出现的次数当作权值 int countChar(char x);

e)建立哈夫曼树 void CrtHuffmanTree(HuffmanTree ht,int w[ ],int n);

f)利用哈夫曼树编码算法获得各个字符的哈夫曼编码 void CrtHuffmanCode(HuffmanTree ht,HuffmanCode hc,int n);

g)用各个字符的哈夫曼编码对正文进行编码,并输出,并存入.code文件 void Change();

h)利用Translate()对文件中代码进行译码,并输出,并存入.decode文件 void Translate();

 

对未知的文件内容,统计次数需要使用遍历统计。//此处是和班长讨论后,我提出问题,班长给出最终答案。


那一开始就是的问题,文件内容可能是未知的,比如会是图片,歌曲等等,这怎么读取?按二进制读取是还是???//这里是不知道的地方,百度问问:c语言读取图片原理:通过文件流的方式读入到Byte的二进制数组中,之后,使用图像分析算法将图像显示到屏幕上,要将数组中的值转换为像素。


然后休息半天思考后,我还是就按我现在的实际水平先来写吧

文本文件的内容暂且全是字符串(包括空格)


明天起课设就开始了,究竟我是抱着哪种心态做课设呢?一开头是说不要帮助,然而呢~结果我会怎么做呢

未来四天看吧


你可能感兴趣的:(数据结构课程设计-12月27日)