数据结构课程设计——哈夫曼编/译码器

news2024/11/24 2:40:57

数据结构课程设计任务书

学生姓名:            专业班级:软件工程

指导教师:              工作单位:

题  目:   哈夫曼编/译码器                                  

基础要求:

(1)熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题

(2)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务

(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表

(4)认真编写课程设计报告。

主要任务:

(1)任务内容

(1)I:初始化(Initialization)。

(2)E:编码(Encoding)。

(3)D: 译码(Decoding)。

(4)P:打印代码文件(Print)。

(5)T:打印哈夫曼树(Tree printing)。

(2)完成要求

对系统进行功能模块分析、控制模块分析;系统设计要能完成题目所要求的功能;编程简练,可用,尽可能的使系统的功能更加完善和全面;说明书、流程图要清楚;提高学生的论文写作能力;特别要求自己独立完成;在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。

(3)撰写课程设计报告

报告格式按附件要求打印与写课程设计报告;论文包括目录、正文、小结、参考文献、附录等;课程设计论文装订按学校的统一要求完成。

时间安排:2022年12月26日——2022年12月30日

指导教师签名:                      年    月    日

完整资料私信我:

 

哈夫曼编/译码器

  • 引言

1.1 问题的提出

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

1.2 任务需求分析

(1)I:初始化(Initialization)。从终端读入字符集大小n , 以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。

(2)E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件hfmTree中读人),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。

(3)D: 译码(Decoding)。利用已建好的哈夫曼树对文件 CodeFile 中的代码进行译码,结果存入文件TextFile中。

(4)P:打印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行 50 个代码。同时将此字符形式的编码文件写入文件 CodePrint中。

(5)T:打印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。

二、代码分析

  1. 模块中使用的数据结构
  1. 哈夫曼树:在进行编码与解码时需要先构造一个哈夫曼树
  1. 线性结构:在构造哈夫曼树时使用线性表来保存树的结点
  1. 模块调用关系

图2.1模块调用关系图

  1. 各模块/函数详细框图

图2.2 流程图

图2.3 菜单图

图2.4系统图

  • 系统集成
  1. 数据结构定义

图3.1 数据结构定义代码

  1. 函数定义

图3.2 函数定义代码

  1. 主函数

图3.3主函数代码

  1. 菜单代码

图3.4菜单代码图

四、课程设计总结

课程设计是让我们充分利用我们专业课程所学知识的机会,也是我们迈向社会,从事工作前一个必不少的过程。通过这次课程设计,我深深体会到将知识运用到实践中的重要作用。我这一个礼拜的课程设计,是让我学会脚踏实地迈开这一步,也是为明天能稳健地在社会大潮中奔跑打下坚实的基础。

我的课程设计题目是哈夫曼编译码器。最初做这个程序的时候,让我觉得完成这次程序设计真的是有点困难,然后我查阅了课本,并在网上百度和在b站上看相关的知识视频,写这个程序的时候也参考了网上的设计流程。写完刚运行时出现了很多问题。尤通过和同学的交流请教与网上百度相关问题的过程,让我逐渐明白过来顺利运行。本次试验也让我明白了理论与实际相结合的重要性,并提高了自己程序的能力,培养了良好的程序设计技能以及学习能力。在实际编写过程中,通过自己网上查询资料和查找相关问题的解决办法让我学到了很多解决问题的方法和思想。课程设计本身也是一种学习的过程。

参考文献

[1]严蔚敏 吴伟民,数据结构(C语言版) [M].清华大学出版社, 2007

[2]肖睿,机器学习基础,北京:人民邮电出版社,2021.

[3]刘鹏,语言,北京:清华大学出版社,2019

[4]董付国,数据分析、挖掘与可视化,北京:人民邮电出版社,2020.1

[5]黄红梅,基于数据结构化的三维动画压缩方法研究《图学学报》,2021

[6]刁在箴,《中国信息技术教育》 | 2021 年第 006 期

[7]田里,数据结构实时调试 北京大学出版社, 2012

[8]张志,数据结构的知识图谱构建及其可视化应用的研究《科学报》,2020

[9]孙希,概率型数据结 北京:北京大学出版社,2017

[10]钱灿,数据结构信息的相关滤波器 北京:清华大学出版社,2015
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/555608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML- 标签学习之- 表单

input 系列&#xff0c; 类型根据type 区分&#xff0c;所有效果如下&#xff1a; 注意点&#xff1a; 单/多选框&#xff1a; name &#xff1a; 相同name属性的单选值为一组&#xff0c;遗嘱中只能有一个被选中 checked&#xff1a; 默认选中 性别<i…

stm32的IIC驱动0.96OLED

IIC原理介绍&#xff1a; IIC是一个总线的结构但不支持总线协议 OLED介绍&#xff1a; 一、0.96寸OLED屏幕介绍 本文采用的是4针的0.96寸OLED显示进行讲解&#xff0c;采用的是SPI协议&#xff0c;速度会比采用I2C协议的更快&#xff0c;但这两者的显示驱动都一样&#xf…

AIGC功能在线制作思维导图?

ProcessOn思维导图软件是一款功能强大的在线制作思维导图的工具&#xff0c;它提供了丰富的模板和图标&#xff0c;可以帮助用户快速制作出高质量的思维导图。其中&#xff0c;AIGC(人工智能图形识别)功能是 ProcessOn软件中的一大特色&#xff0c;它可以帮助用户更加高效地制…

permiere的字幕自动转录功能

permiere2022.3后就能够离线字幕转录了&#xff0c;这个是个很好的消息&#xff08;但也要温馨的提示大家&#xff0c;这个功能对于非标注发音或者环境嘈杂的环境下的语音识别很不友好&#xff0c;当然&#xff0c;如果你想利用它来识别歌词&#xff0c;那就乘早死了这条心&…

chatgpt赋能Python-pythonslam

Pythonslam&#xff1a;实现SLAM技术的Python库 在机器人领域&#xff0c;SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;技术是非常重要的。SLAM技术使得机器人能够在未知环境中构建地图并同时确定自己的位置。然而&#xff0c;SLAM算法往往需要强大的计…

Godot引擎 4.0 文档 - 第一个 2D 游戏

本文为Google Translate英译中结果&#xff0c;DrGraph在此基础上加了一些校正。英文原版页面&#xff1a; Your first 2D game — Godot Engine (stable) documentation in English 第一个 2D 游戏 在这个循序渐进的教程系列中&#xff0c;您将使用 Godot 创建您的第一个完…

上交清华搞事情!发起最全学科大模型中文知识及推理评测!GPT-4 竟然血洗所有国产模型

夕小瑶科技说 原创 作者 | 小戏&#xff0c;Python 从 OpenAI 的 ChatGPT、Meta 的 LLaMA、Anthropic 的 Claude 到复旦的 Moss、清华的 ChatGlm、MiniMax 的 Glow&#xff0c;国内的国外的大模型百花齐放层出不穷。那么&#xff0c;抛出一个相信大家都会关心的问题&#xff…

网狐大联盟服务端源码分析之服务核心-ServiceCore

工程属性分析: 1.工程属性->动态链接库 2.dll类型->MFC共享DLL 3.字符集->Unicode 4.库导出类型->使用模块定义文件def 5.生成的导出模块函数与对应的地址定义lib文件 源码分析: 头文件分析: 头文件与对应含义表示如下:

开关电源PCB排版基本规则

开关电源PCB排版是开发电源产品中的一个重要过程。许多情况下&#xff0c;一个在纸上设计得非常完美的电源可能在初次调试时无法正常工作&#xff0c;原因是该电源的PCB排版存在着许多问题。 为了适应电子产品飞快的更新换代节奏&#xff0c;产品设计工程师更倾向于选择在市场…

Linux安装部署Redis6.2.5图文教程

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库&#xff0c;并提供多种语言的 API。最近学习需要用到Redis&#xff0c;所以就去Linux服务器上部署一个&#xff0c;做下记录&#xff0c;方便…

PostgreSQL中的行锁

行锁在PG中比较特殊&#xff0c;在9.4以前&#xff0c;只有两种类型的行锁&#xff0c; FOR UPDATE 和FOR SHARE&#xff0c;因为只有两种锁&#xff0c;粒度比较大&#xff0c;极大的影响了并发性。所以从9.4开始引入了FOR KEY SHARE和FOR NO KEY UPDATE这两种行锁。目前这四种…

防火墙——SNAT和DNAT策略的原理及应用、防火墙规则的备份、还原和抓包

防火墙—SNAT和DNAT策略的原理及应用、防火墙规则的备份、还原和抓包 一、SNAT策略概述1、SNAT应用环境2、SNAT原理3、SNAT转换的前提条件 二、SNAT策略的应用1、临时打开2、永久打开3、SNAT转换1&#xff1a;固定的公网IP地址4、SNAT转换2&#xff1a;非固定的公网IP地址&…

一文搞懂,PO设计模式详解

PO模式&#xff1a; 全称&#xff1a;page objece&#xff0c;分层机制&#xff0c;让不同层去做不同类型的事情&#xff0c;让代码结构清晰&#xff0c;增加复⽤性。 PO模式的优势&#xff1a; 1&#xff09;效率⾼ &#xff1a;同理&#xff0c;PO模式的逻辑层⽅法有具体定…

Flink第六章:多流操作

系列文章目录 Flink第一章:环境搭建 Flink第二章:基本操作. Flink第三章:基本操作(二) Flink第四章:水位线和窗口 Flink第五章:处理函数 Flink第六章:多流操作 文章目录 系列文章目录前言一、分流1.侧输出流(process function) 二、合流1. 联合&#xff08;Union&#xff09;2…

CVE-2018-2894WebLogic未授权任意文件上传

CVE-2018-2894WebLogic未授权任意文件上传 这个洞的限制就比较多了 限制版本 Oracle WebLogic Server版本 10.3.6.0 12.1.3.0 12.2.1.2 12.2.1.3 限制配置 该漏洞的影响模块为web服务测试页&#xff0c;在默认情况下不启用。 /ws_utc/config.do /ws_utc/begin.do 默认情况下不…

在职字节6年,一个29岁女软件测试工程师的心声

简单的先说一下&#xff0c;坐标杭州&#xff0c;14届本科毕业&#xff0c;算上年前在字节跳动的面试&#xff0c;一共有面试了有6家公司&#xff08;因为不想请假&#xff0c;因此只是每个晚上去其他公司面试&#xff0c;所以面试的公司比较少&#xff09; 其中成功的有4家&a…

Linux防火墙----firewalld

文章目录 一、firewalld概述二、firewalld 与 iptables 的区别三、firewalld 区域的概念四、firewalld数据处理流程五、firewalld防火墙的配置方法5.1 使用firewall-config 图形工具5.2 编写/etc/firewalld/中的配置文件5.3使用firewall-cmd 命令行工具 一、firewalld概述 fir…

AI:帮助你更好地发声!

正文共 978 字&#xff0c;阅读大约需要 3 分钟 公务员必备技巧&#xff0c;您将在3分钟后获得以下超能力&#xff1a; 快速生成倡议书 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 | Linda ●图片由Lex…

当你知道前后端分离与不分离的6个特点,你就不该再当点工了

Web 应用的开发主要有两种模式&#xff1a; 前后端不分离 前后端分离 理解它们的区别有助于我们进行对应产品的测试工作。 前后端不分离 在早期&#xff0c;Web 应用开发主要采用前后端不分离的方式&#xff0c;它是以后端直接渲染模板完成响应为主的一种开发模式。以前后端不…

linux存储技术学习资料

参考 https://www.cnblogs.com/pengdonglin137/p/16525428.html Linux I/O栈 Linux内核的I/O栈大图知乎Linux I/O专栏1Linux 块设备之Block Layer层架构演变Linux VFS机制简析&#xff08;一&#xff09;Linux VFS机制简析&#xff08;二&#xff09;Linux Kernel文件系统写I…