1 实 验 报 告 与 总 结 一 、 实 验 目 的 1、 掌 握 哈 夫 曼 编 码 原 理 ; 2、 熟 练 掌 握 哈 夫 曼 树 的 生 成 方 法 ; 3、 理 解 数 据 编 码 压 缩 和 译 码 输 出 编 码 的 实 现
二 、 实 验 要 求 实 现 哈 夫 曼 编 码 和 译 码 的 生 成 算 法
三 、 实 验 内 容 先 统 计 要 压 缩 编 码 的 文 件 中 的 字 符 字 母 出 现 的 次 数 ,按 字 符 字 母 和 空 格 出 现 的 概 率 对 其进 行 哈 夫 曼 编 码 , 然 后 读 入 要 编 码 的 文 件 , 编 码 后 存 入 另 一 个 文 件 ; 接 着 再 调 出 编 码 后 的 文件 , 并 对 其 进 行 译 码 输 出 , 最 后 存 入 另 一 个 文 件 中
五 、 实 验 原 理 1、 哈 夫 曼 树 的 定 义 : 假 设 有 n 个 权 值 , 试 构 造 一 颗 有 n 个 叶 子 节 点 的 二 叉 树 , 每 个 叶 子 带权 值 为 w i, 其 中 树 带 权 路 径 最 小 的 二 叉 树 成 为 哈 夫 曼 树 或 者 最 优 二 叉 树 ; 2、 哈 夫 曼 树 的 构 造 : w eight 为 输 入 的 频 率 数 组 , 把 其 中 的 值 赋 给 依 次 建 立 的 HT Node 对 象 中 的 data 属 性 ,即 每 一 个 HT Node 对 应 一 个 输 入 的 频 率
然 后 根 据 data 属 性 按 从 小 到 大 顺 序 排 序 , 每 次 从data 取 出 两 个 最 小 和 此次 小 的 HT Node, 将他们的 data 相加, 构 造 出 新的 HTNode 作为他们的 父节 点 , 指针parent, leftch