《数据结构》课程设计

发布 2022-10-05 01:58:28 阅读 6931

保持青春的秘诀,是有一颗不安分的心。

数据结构》课程设计。

凌璐。一。 题目:压缩软件。

二。 算法思想描述:

1.算法概述:首先输入需要压缩的文件名,对该文件中的各个字符出现的频度进行统计,然后进行huffman编码,再读入源文件,将源文件翻译成huffman编码文件,输出到文件最后读入文件,将huffman编码文件翻译成文本文件,输出到总体思路如图1所示。

2.算法具体分析。

1) 入需要压缩的文件名(例如:e:\\1\\转义字符\\表示\)

2) 对该文件中的各个字符进行统计。

while(!feof(fp))

fscanf(fp,"%c",&c);

a[c]++

数组里存放的是该字符出现的次数,数组的下标即该字符对应的ascii值。

判断a[i]是否为0,对不为0的进行huffman编码,数组值即权值。

3) 根据huffman算法,建立huffman树。

4) 给叶子节点进行编码,先用一个临时的数组来存放编码,然后把该字符的编码存入一个二维数组,直至所有的叶子结点编码完成,编码存放在二维数组hd[128][100]内。

5) 读入源文件的内容,将字符所对应的编码(调用数组hd[128][100])输出到文件里。

6) 读入文件,若读入'0'则在huffman树的左子树上找,否则在右子树上找,直到找到叶子结点(huffman树存放在自定义的存储结构closedge[500]内),输出叶子结点的字符到文件直至翻译完所有内容。

7) 计算压缩比:huffman编码文件字符数/源文件的字符数。

三.程序结构。

四. 实验结果与分析。

上述程序在visual c++ 6.0 环境下加以实现,经过多次的测试,程序运行正确。

例如:输入文件e:\1\运行结果如图2,图中显示源文件的字符数和压缩后字符数,以及压缩比。

成功将源文件e:\1\压缩到文件图3)里,再还原到文件通过比较与源文件,结果一样!图2图3

五.体会。通过这次课程设计,我有很深的体会,具体如下:

1. huffman树的建立,编码,译码有了更深层次的理解。

2. 文件的打开,关闭,读入,输出语句比较熟悉了。

3. 统计文件中字符的个数时,根据所要统计的字符的特征(ascii值从0到127),可以定义一个数组a[128], 数组的下标即该字符对应的ascii值,扫描源文件,扫到哪个字符对应的数组值+1,即a[c]++c为字符),最终数组里存放的是对应字符出现的次数,这样不但语句简洁,而且十分明了。

4. 程序应用更广泛,比如压缩文件,只要输入文件的路径和名称,就可以对其进行压缩,而不是仅局限于某个特定文件。

5. 输入文件名的时候,路径中的\,应该。

写成\\(转义字符\\表示\),否则系统将默认\和它后面的字符组成转义字符,这样就错了。

6. 对文件的压缩也有了初步的了解,是huffman编码文件,如果把看成字符,那么文件的字符数增加了,如果把它看成位(bit),若一个字符对应的编码小于8位这样文件就压缩了。

7. 从用户角度出发来编写程序,使结果尽量简洁明了。

haffman编码压缩文件1

保持青春的秘诀,是有一颗不安分的心。

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...