【swjtu】数据结构实验7_Huffman编码

  • 实验内容及要求: 

输入符号数(序号用英文字母A, B, C, …表示)以及各符号出现概率(要求符号数不小于10,建议用字符文件实现数据输入),建立Huffman二叉树存储结构,以字符串形式输出各符号对应的二进制哈夫曼编码(建议输出到屏幕和字符文件中以便检验正确性)。

从键盘以字符串形式输入字母组成的符号串,利用已经建立的Huffman编码表在屏幕上输出该符号串对应的二进制Huffman编码串然后对Huffman编码串进行译码并在屏幕上输出译码后的字母符号串(对比是否与原始符 5号串相同)。建议用菜单形式提供功能以实现可多次输入字母符号串及其编码译码结果。

  • 实验目的:掌握Huffman编码。 

  • 数据结构设计简要描述:

霍夫曼树的节点构造以及权重表,符号表,编码表,实际符号数。采用数组的形式来存储所有节点,则要提供左右子树和双亲节点指针。

  • 算法设计简要描述:

首先根据算法应该先找到所有根节点中最小的两个组成一棵新树的左右子树,删除这两个节点(用parent为-1来说明为根节点,如不是-1,则为删除),添加新生成的节点即让新树的根节点的parent为-1即可。因此可以遍历要生成节点前的所有节点来不断生成新树,最后形成只有二度节点和零度节点的二叉树。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本实验要求以 FPGA 为硬件电路核心,设计一个 14 键单音电子琴。电子琴的每个琴键 对应一个七声音阶的简谱音符(用 C 调,可以占两个完整的八度,也可以占一个完整八度加 上前后各半个八度,具体请自行设计)。弹奏时按下任意一个琴键,电路产生对应音符的频 率信号(占空比 50%的方波)。将该方波信号接到扬声器(PIN_128)上就可以听到弹奏的乐声。 自动播放功能需要在代码中编写一个“据表”(可以是寄存器组,也可以用 case 语 句实现),据表中存储着乐谱每个音符对应的分频系。将这些分频系以特定的时间间 隔(节拍,比如每隔 0.25 秒)输出到可控分频器,则分频器就可以产生所需音符的频率信 号。 任务 1 设计一个可控分频器,clk_in 为分频器时钟输入,Key[13:0]为琴键开关,clk_out 为分频器信号输出。在码管上显示当前弹奏的简谱音符(高音、低音要能够区分,表示方 法请自行设计)。 仿真测试 配置好仿真参,模拟琴键被逐个按下的状态,每个键按下的持续时间要保证至少能产 生 1 个同期的音符信号,为了便于观测,最好产生 2~3 个周期。在仿真结果中测量每个音符 的输出信号的频率(周期),并与理论值比对,误差在 1%以内为正确,否则应修改电路使工 作正常。 仿真时应当把音符的唱名(简谱符号)显示在波形图中。 实验测试 实验箱的扬声器没有连接到可供接线的 IO 端口,需要给电路增设一个输出(信号与 clk_out 相同)并锁定到空闲的 IO 端口上。将输出信号连接到实验箱的逻辑分析仪 CH0 上, 西南交通大学 电子技术实验室 观测并记录弹奏时每个音符的频率,并与理论值比对,误差在 1%以内为正确,否则应修改 电路使工作正常。 试着弹奏一首乐曲。 任务 2 在完成任务 1 的基础上,给电子琴增加自动播放功能,当电子琴切换到自动播 放模式时,能够自动循环播放一首编写在代码中的乐曲。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码龄零年_921

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值