数据结构课程设计

发布 2022-10-05 01:16:28 阅读 1288

哈尔滨工业大学(威海)

课程设计报告。

报告题目:哈夫曼编码与译码实现。

迷宫问题。所在学院: 经济管理学院。

专业: 信息管理与信息系统。

班级: 0903601

姓名 : 周润。

学号 : 090360105

指导教师: 李明星

完成时间 : 2024年7月12日

前言:数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机学科的核心课程,学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构及其相应的算法并初步掌握算法的时间分析和空间分析的技术。加深理解顺序表示的意义和区别,理解用它们表示时插入与删除操作的算法。

设计一组输入数据并编写主程序分别调用下述基本操作算法,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构; 数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。

在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。

有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。通过本课程设计,达到对数据结构的选择和应用、算法的设计及实现等方面加深对课程基础内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

一设计内容。

1)问题描述。

利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。

试为这样的信息收发站写一个哈夫曼编/译码系统。

基本要求]:

1)i:初始化(initialization)。从终端输入一个长度不超过80的字符串(全部为大写字母且无空格)。

统计字符串的长度n、以及不同字符的个数和每种字符的权值,然后建立哈夫曼树。

2)e:编码(encoding)。利用已建好的哈夫曼树对正文字符串进行编码,并输出。

3)d:译码(decoding)。利用已建好的哈夫曼树与已经完成的编码进行译码,并输出。

二需求分析:

问题的提出。

哈夫曼编码问题中,如何建立最优二叉树,并建立编码规则,如何根据用户输入的字符序列将其转化成0,1**,再将0,1**转化成字符序列。

设计目标。1.能根据用户端的输入建立二叉树。

2.能根据编码规则将用户输入的字符序列转换程对应的0,1**,再根据此**将0,1序列转换成字符序列。

三问题的解决方案。

根据系统功能要求,可以将问题解决分为以下步骤:

1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

2)分析系统中的各个函数及它们之间的关系;

3)根据问题描述,设计系统的结构体及各个函数;

4)设计哈夫曼树的构造算法和哈弗曼编码算法;

5)完成系统的应用模块;

6)功能调试;

控制台应用程序:huffman 项目概述。

应用程序向导已为您创建了此 huffman 应用程序。

本文件概要介绍组成 huffman 应用程序的。

的每个文件的内容。

这是使用应用程序向导生成的 vc++ 项目的主项目文件,其中包含生成该文件的 visual c++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。

这是主应用程序源文件。

其他标准文件:

这些文件用于生成名为 的预编译头 (pch) 文件和名为 的预编译类型文件。

其他注释:应用程序向导使用“todo:”注释来指示应添加或自定义的源**部分。

程序**如下:

/ :定义控制台应用程序的入口点。

#include ""

#include ""

#include""

#include""

#include

using namespace std;

typedef struct

else if ((a[i].parent==0)&&num==1))

if(a[*p].weight>a[*q].weight)

//使*p指向较小的一项

for (i=1;i<=n;i++)

else if((a[i].weight

void huffmancoding(htnode *ht,huffmancode hc,char *ch,int *w,int n)

int *q,i,s1,s2;

char *cd;

int start,c,f,m;

htnode *p;

if(n<=1) return;

q=w;m=2*n-1;

//ht=(htnode*)malloc((m+1)* sizeof(htnode));

p=ht+1;//指向一号。

for(i=1;i<=n;++i)

for(i=n+1;i<=m;i++)

for(i=n+1;i<=m;++i)

hc=(huffmancode)malloc((n+1)*sizeof(char*))

cd=(char *)malloc(n*sizeof(char));

cd[n-1]='0';

for(i=1;i<=n;++i)

//free(cd);

void decoding(htnode *ht,char *code,char *ch,int n)//code里存的是0和1的数列,n存放字符的种类,左0右1

cout<<"译码结果为"< int m=2*n-1;//这是霍夫曼树的节点数,霍夫曼存储时需m+1个节点。从位置1开始存。

int i=0;

int j=m;

while((code[i]==0')|code[i]==1'))i++;

cout<

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 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 初始化时每个方格都是关闭的,一个...