当前位置: 首页 > news >正文

数据结构_哈夫曼树及其应用

构造算法的例子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

构造算法的实现

在这里插入图片描述
在这里插入图片描述

初始化,置权值

在这里插入图片描述

int i, m, s1, s2;m = 2 * n - 1;for (i = 1; i <= m; i++){HT[i].lch = 0;HT[i].rch = 0;HT[i].parent = 0;}for (i = 1; i <= n; i++){cin >> HT[i].weight;}

合并结点

在这里插入图片描述

// 创建哈夫曼树for (i = n + 1; i <= m; i++){s1 = -1;s2 = -1;Selete(HT, i - 1, s1, s2);HT[s1].parent = i;HT[s2].parent = i;HT[i].lch = s1;HT[i].rch = s2;HT[i].weight = HT[s1].weight + HT[s2].weight;}

哈夫曼编码

在这里插入图片描述

void HuNode::create_Code(HuNode* HT, char** code, int n)
{int i, current, parent, k;char temp[100]; // 临时数组存放编码for (i = 1; i <= n; i++){current = i;parent = HT[i].parent;k = 0; // 编码长度计数器while (parent != 0){if (HT[parent].lch == current){temp[k] = '0'; // 左子节点编码为 '0'k++;}else{temp[k] = '1';k++;}current = parent;parent = HT[current].parent;}temp[k] = '\0';// 将编码倒置并保存code[i] = new char[k + 1];for (int j = 0; j < k; j++){code[i][j] = temp[k - j - 1];}code[i][k] = '\0';}
}

文件的编码或译码

在这里插入图片描述
在这里插入图片描述

int HuNode::Decode(const string codestr, char txtstr[], int n)
{int index, root, i, curNode;index = 0;root = 2 * n - 1; // 根节点编号curNode = root;for (i = 0; i < codestr.length(); i++){if (codestr[i] == '0'){curNode = this[curNode].lch;}else{curNode = this[curNode].rch;}// 解码失败if (curNode == 0){return error;}// 是叶子节点if (this[curNode].lch == 0 && this[curNode].rch == 0){txtstr[index] = this[curNode].data;index++;curNode = root;}}if (curNode != root){return error;}txtstr[index] = '\0';return ok;
}

相关文章:

数据结构_哈夫曼树及其应用

构造算法的例子 构造算法的实现 初始化&#xff0c;置权值 int i, m, s1, s2;m 2 * n - 1;for (i 1; i < m; i){HT[i].lch 0;HT[i].rch 0;HT[i].parent 0;}for (i 1; i < n; i){cin >> HT[i].weight;}合并结点 // 创建哈夫曼树for (i n 1; i < m; i){s1…...

从0开始学习机器学习--Day19--学习曲线

一般来说&#xff0c;如果一个算法的表现不理想&#xff0c;那么多半是因为出现了欠拟合或过拟合问题&#xff0c;这种时候我们要做的就是搞清楚出现的是偏差问题还是方差问题&#xff0c;亦或是二者皆有&#xff0c;这有助于我们精准定位问题所在。 之前&#xff0c;我们发现…...

2.索引:深入解析 B+ 树:原理、MySQL 应用及与其他数据结构的对比

B 树是一种高效的平衡树结构&#xff0c;在数据库和文件系统中被广泛应用&#xff0c;尤其在 MySQL 中&#xff0c;InnoDB 存储引擎通过 B 树实现索引结构&#xff0c;提升了大数据量条件下的查询性能。 本文将深入介绍 B 树的原理和设计特点&#xff0c;分析 MySQL 中使用 B …...

[全网最细数据结构完整版]第六篇:3分钟带你吃透栈并模拟实现

目录 1->栈的概念和结构 1.1栈的概念 1.2栈的结构 2->栈的实现 2.1定义关于栈的结构体和各种函数 2.2栈的初始化 STInit 函数 2.3栈的销毁 STDestroy 函数 2.4栈的插入操作 STPush 函数 2.5栈的判断是否为空操作 STEmpty 函数 2.6栈的删除操作 STPop 函数 2.7…...

如何在 Docker 容器中启动 X11 图形界面程序

如何在 Docker 容器中启动 X11 图形界面程序 在使用 Docker 时&#xff0c;我们通常会发现&#xff0c;容器中的图形应用没法直接显示到宿主机的界面上。不过&#xff0c;我们可以通过共享 X11 的 Unix 套接字&#xff0c;让容器把显示数据传递给宿主机的 X11 服务器&#xff…...

pycharm保存是自动格式化

在PyCharm中设置保存时自动格式化代码&#xff0c;可以按照以下步骤进行&#xff1a; 1. 打开设置 在Windows和Linux系统中&#xff0c;可以通过File&#xff08;文件&#xff09;->Settings&#xff08;设置&#xff09;打开设置窗口&#xff1b;在Mac系统中&#xff0c;…...

.netCore WebAPI中字符串加密与解密

In today’s digital landscape, securing sensitive information is more critical than ever. If you’re using ASP.NET Core, you might store configuration settings in appsettings.json. However, hardcoding sensitive data like connection strings or API keys in p…...

Next.js + Move 石头剪刀布

rock-paper-scissors 写在前面 本地 源码&#xff1a;https://github.com/zcy1024/SuiStudy/tree/main/rock-paper-scissors # 或其它等价的命令来安装依赖并将项目跑起来 pnpm install pnpm run dev # http://localhost:3000/在线&#xff08;如果没过期的话&#xff09; …...

[面试]关于Redis 的持久化你了解吗

Redis的持久化是指Redis服务器在关闭或重启时&#xff0c;将内存中的数据保存到磁盘上的一种机制。Redis支持多种持久化方式。 一、RDB&#xff08;Redis Database&#xff09;持久化 RDB持久化是Redis默认采用的持久化方式&#xff0c;它将Redis在某个时间点的数据保存到磁盘上…...

Systemd:tmpfiles

Systemd提供了一个结构化的可配置方法来管理临时文件和目录,即systemd-tmpfiles,可以创建、删除和管理临时文件的服务。 $ systemctl list-units --all | grep systemd-tmpfilessystemd-tmpfiles-clean.service load…...

【Flutter 内嵌 android 原生 View以及相互跳转】

Flutter 内嵌 android 原生 View以及相互跳转 一. 内嵌android 原生View二、android 与 flutter 相互跳转 一. 内嵌android 原生View 在android 工程的包名下&#xff0c;也可在MainActivity创建 android 原生view &#xff0c;继承PlatformView // 1.自定义textview public st…...

python externally-managed-environment 外部管理环境

https://realpython.com/python-virtual-environments-a-primer/?refyaolong.net#why-do-you-need-virtual-environments 简而言之&#xff0c; pip 默认会将您安装的所有外部包放置在 Python 安装路径/site-packages/ 的文件夹中一些Linux 和 macOS操作系统 预装了内部的 P…...

前端 | MYTED单篇TED词汇学习功能优化

文章目录 &#x1f4da;实现效果&#x1f407;before&#x1f407;after &#x1f4da;模块实现解析&#x1f407;html&#x1f407;css&#x1f407;javascript &#x1f4da;实现效果 &#x1f407;before 点击TED单篇词汇表按钮&#xff0c;选择对应TED打卡号&#xff0c;…...

64 mysql 的 表锁

前言 我们这里来说的就是 我们在 mysql 这边常见的 几种锁 行共享锁, 行排他锁, 表意向共享锁, 表意向排他锁, 表共享锁, 表排他锁 我们前面了解了行共享锁, 行排他锁, 表意向共享锁, 表意向排他锁 等等相关 我们这里 来看一下 表共享锁, 表排他锁 的获取, 以及 和 其他表级…...

【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】题库(1)

前言 大家好吖&#xff0c;欢迎来到 YY 滴计算机网络 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 本博客主要内容&#xff0c;收纳了一部门基本的计算机网络题目&#xff0c;供yy应对期中考试复习。大家可以参考 欢迎订阅 YY滴其他专栏&#xff01;…...

ajax关于axios库的运用小案例

AJAX案例 图书管理 四大功能&#xff1a; 展示图书删除图书编辑图书信息新增图书 步骤 1.bootstrap弹窗来实现新增和编辑图书时出现的弹窗 有两种方案&#xff1a; a.可以用自带的属性来进行弹窗的显示和隐藏 b.可以通过JS进行控制&#xff0c;此操作可以进行自定义&am…...

微搭低代码入门01变量

目录 1 变量的定义2 变量的赋值3 变量的类型4 算术运算符5 字符串的连接6 模板字符串7 检查变量的类型8 解构赋值8.1 数组的解构赋值8.2 对象的解构赋值 9 类型转换9.1 转换为字符串9.2 转换为数字9.3 转换为布尔值 总结 好些零基础的同学&#xff0c;在使用低代码的时候&#…...

盘点2024年10款视频剪辑,哪款值得pick!!

在这个短视频盛行的时代&#xff0c;如何让我们的故事更生动有趣呢&#xff1f;那就要对短视频进行修饰了。这就需要借助视频剪辑工具&#xff1a;而一款好的工具不仅仅是视频的“美颜”&#xff0c;更是创意的灵魂所在&#xff01;想象一下&#xff0c;运用一款功能齐全的剪辑…...

苹果手机照片批量删除:一键清理,释放空间

在数字化时代&#xff0c;iPhone不仅是我们沟通的桥梁&#xff0c;也是记录生活的重要工具。然而&#xff0c;随着时间的积累&#xff0c;手机中的照片数量不断增加&#xff0c;不仅占用大量存储空间&#xff0c;也让设备变得缓慢。苹果手机照片批量删除成为了一个普遍的需求。…...

《AI 大模型:重塑软件开发新生态》

《AI 大模型&#xff1a;重塑软件开发新生态》 一、AI 大模型引领软件开发新潮流二、AI 大模型在软件开发中的优势&#xff08;一&#xff09;提高开发效率&#xff08;二&#xff09;减少错误与提升质量&#xff08;三&#xff09;激发创新与拓展功能 三、AI 大模型在软件开发…...

别再乱用nn.Flatten了!详解start_dim与end_dim参数,避坑数据维度混淆

深度解析PyTorch中的nn.Flatten&#xff1a;从参数误区到实战应用 在深度学习模型的构建过程中&#xff0c;数据维度的处理往往成为许多开发者容易忽视却又至关重要的环节。特别是当我们需要将卷积层的输出传递给全连接层时&#xff0c;nn.Flatten操作几乎成为了标准配置。然而…...

MD5是哈希,不是加密,防君子不防小人

一、先把概念说清楚很多开发者在日常交流中习惯说“MD5加密”&#xff0c;这个说法流传太久&#xff0c;以至于不少人真的以为MD5是一种加密算法。实际上&#xff0c;MD5属于哈希&#xff08;Hash&#xff09;算法&#xff0c;也叫散列算法或消息摘要算法。加密和哈希的本质区别…...

MATLAB单双目标定实战:逐图解析重投影误差的提取与评估

1. 重投影误差的底层逻辑与MATLAB实现 第一次用MATLAB做相机标定时&#xff0c;盯着那个总均方根误差&#xff08;Total RMS Error&#xff09;数值看了半天&#xff0c;总觉得少了点什么。后来才明白&#xff0c;就像考试不能只看总分&#xff0c;标定质量评估也需要细化到每张…...

保姆级教程:用STM32+ESP8266+微信小程序,5分钟搞定Onenet数据上传与设备控制

零基础实战&#xff1a;STM32ESP8266微信小程序极速对接Onenet全指南 在物联网技术快速普及的今天&#xff0c;许多嵌入式开发者都希望快速搭建一个完整的智能设备系统。本文将带你用最简单的方式&#xff0c;通过STM32微控制器、ESP8266 WiFi模块和微信小程序&#xff0c;实现…...

从零搭建一个智能视频监控系统:3D定位、ONVIF控制与Python UI实战

从零搭建智能视频监控系统&#xff1a;3D定位、ONVIF控制与Python UI实战 在智能安防和物联网应用蓬勃发展的今天&#xff0c;具备3D定位功能的视频监控系统正成为行业新宠。本文将带您从零开始&#xff0c;基于树莓派或普通PC&#xff0c;结合支持ONVIF协议的球型摄像机&#…...

《LeetCode 顺序刷题》81 - 90

81、[中等] 搜索旋转排序数组 Ⅱ 数组 二分查找 class Solution { public:bool search(vector<int>& nums, int target) {int n nums.size();if (n 0) {return false;}if (n 1) {return nums[0] target;}int l 0, r n - 1;while (l < r) {int mid (l r)…...

ARM指令集架构与安全指令解析:APAS、ASR与AUT

1. ARM指令集架构概述在处理器设计领域&#xff0c;指令集架构&#xff08;Instruction Set Architecture, ISA&#xff09;定义了处理器与软件之间的契约。作为RISC&#xff08;精简指令集计算机&#xff09;架构的代表&#xff0c;ARM指令集以其高效能和低功耗特性&#xff0…...

【亲测免费】 电机速度闭环控制(代码详细注释)

电机速度闭环控制&#xff08;代码详细注释&#xff09; 【下载地址】电机速度闭环控制代码详细注释 本仓库提供了电机速度闭环控制的实践教程&#xff0c;特别适合对电机控制、尤其是PID控制算法感兴趣的学习者。PID控制是一种广泛应用于工程领域的闭环控制策略&#xff0c;能…...

【亲测免费】 探索VBA编程的利器:VBA参考手册(CHM)

探索VBA编程的利器&#xff1a;VBA参考手册(CHM) 【下载地址】VBA参考手册chm 本仓库提供了一个VBA参考手册的下载资源&#xff0c;文件格式为CHM&#xff08;Compiled HTML Help&#xff09;。该手册是学习和使用VBA&#xff08;Visual Basic for Applications&#xff09;的重…...

Multi-head Self-Attention Machanism

3. 多头自注意力机制&#xff08;Multi-head Self-Attention Machanism&#xff09; 多头注意力机制是在自注意力机制的基础上发展起来的&#xff0c;是自注意力机制的变体&#xff0c;旨在增强模型的表达能力和泛化能力。它通过使用多个独立的注意力头&#xff0c;分别计算注…...