数据结构课程设计

发布 2022-10-01 20:22:28 阅读 8340

课程设计说明书(**)

题目哈夫曼编码问题的设计和实现。

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

院(系、部、中心。

专业。班级。

学生姓名。学号。

设计地点。指导教师。

设计起止时间:2008 年6月 2日至 2008 年 6月 6 日。

目录。1 问题描述 2

1.1 题目内容 2

1.2 基本要求 2

1.3 测试数据 2

2 需求分析 2

2.1 程序的基本功能 2

2.2 输入值、输出值以及输入输出形式 2

2.3 各个模块的功能要求 3

3 概要设计 4

3.1 所需的adt,每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义) 4

3.2 主程序流程以及模块调用关系 4

3.3 各个模块的算法设计说明 4

4 详细设计 7

4.1 数据类型 7

4.2 函数调用 8

5 各个算法实现的源程序 8

6 调试分析 11

7 使用说明 12

8 测试结果 12

9 源程序 12

1 问题描述。

哈夫曼编码问题的设计和实现。

输入一个英文字符串,对该字符串中各字符个数进行统计取得各字符的出现次数;以其出现次数作为关键字建立哈夫曼树并进行编码,最后输出各个字符对应的码值。

要求:设计存储结构、基本算法(主要采用程序流程图体现);完成基本算法的实现**;设计测试输入数据对程序进行测试,分析输出结果数据、算法的时间复杂度分析,如有改进算法则提出算法的改进方法。

测试数据三组:

aaaabbbccd(判断连续的字符串是否可行)

aabbaabcdc(判断间段的字符串是否可行)

aaaa bbbccd(判断含空格的字符串是否可行)

2 需求分析。

该程序大体上有两个功能:

1. 输入任何一个字符串后,该程序能统计不同字符串的个数,并以不同字符串的个数作为权值。

2. 已知不同字母的权值,以该权值作为叶结点,构造一棵带权路径最小的树,对该树从叶结点到根结点路径分支遍历,经过一个分支就得到一位夫曼编码值。(规定哈夫曼树中的左分支为0,右分支为1,则从根结点到每个叶结点所经过的分支对应的0和1组成的序列便为该结点对应字符的编码)

输入值 :aaaabbbccd

输出值 :w =4 c=0

w=3 c=10

w=2 c=111

w=1 c=110

输入值 :aabbaabcdc

输出值 :w=4 c=0

w=3 c=10

w=2 c=111

w=1 c=110

输入值 :aaaa bbbccd

输出值 :w=4 c=11

w=1 c=010

w=3 c=10

w=2 c=00

w=1 c=011

1. 统计模块。

任意输入一个字符串,不论字母是否相联,字符串中是否含空格都能统计出不同字母的个数。

2. 建立哈夫曼树模块。

以统计的字符串个数作为权值,利用**存储结构,建立带权路径最小的树。

其中对结点的存储需要六个域,分别是 weight 域,flag域, parent域,leftchild 域,rightchild域。weight 域是对权值的存放,flag 域是一个标志域,flag=0时表示该结点尚未加入到哈夫曼树中,flag=1时表示该结点已加入到哈夫曼树中。

3. 哈夫曼编码模块。

从哈夫曼树的叶结点到根结点路径分支逐步遍历,每经过一个分支就得到一位哈夫曼编码。哈夫曼编码也利用**存储结构。

4. 主函数模块。

从屏幕上输入字符串,调用函数,输出每个字母的权值与编码。

3 概要设计。

抽象数据类型集合:在该程序中未用到抽象数据类型,主要用到的数据类型为 :int ,char 。

在哈夫曼树的建立与哈夫曼树的编码中用到**存储。

输入字符串——〉调用count 函数——〉申请内存空间——〉调用 haffman

—〉调用 haffmancode——〉输出权值与编码。

1. 主函数模块。ny

ynny

主函数中利用gets输入一个字符串,调用count 函数统计不同字母的个数,在调用。

haffman 函数建立哈夫曼树,然后调用haffmancode函数进行编码,如果成功,输出权。

值与编码,否则退出。

2. 统计函数。yn

yyny

统计函数在统计不同字符个数时先利用一个for循环遍历所有的字母,每遍历一个不同字母前令temp=1,然后用一个for循环将其后的字母与之比较,若相等则temp++,且将该字母从字符串中删除,否则从下一个字母遍历。如此循环直到字符串结束。

3. haffman 函数。ny n

ny ny

nyyhaffman函数主要以**结构存储信息,开始对每个域开始赋值,再根据不同的情况对每个域的值进行修改,如此循环下去,直到每个域的值修改完全。

4. hffmancode 函数。ny

nn n yy

数据结构课程设计

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

数据结构课程设计

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

数据结构课程设计

数据结构 课程设计报告。安徽工业大学计算机学院。2014年6月。目录。一 迷宫问题求解 2 二 大数相乘 8 三 学生成绩查询系统 二叉排序树 10 一 问题描述 利用栈求解迷宫问题。二 设计思路 首先先定义栈,初始化,入栈,出栈,删除栈,判空等,然后再结合具体迷宫算法。三 数据结构定义。typed...