哈夫曼编码与译码(数据结构课程设计)

2023-11-13

事先声明:哈夫曼编码中的选择函数Select思路借鉴了csdn大佬,非原创(吹一波彩虹屁,大佬真厉害)

众所周知,数据结构这门课程是非常非常重要的。无论是找工作还是考研,你都能体会到。数据结构这本书的知识也非常的奇特美妙。希望大家好好学习研究。废话就不多说,上代码。

Select函数的三种写法:

//第一种
void Select(HuffmanTree ht, int n, int &s1, int &s2) 
{
	int i;
	
	for (i = 1; i <= n; i++) 
	{
		if (ht[i].parent == 0) //针对未构造的才能选择 
		{
			s1=i;//选择一个对比 记录下标 
			break;
			
		}
	}

    for (i = s1+1; i <= n; i++) 
    {
        if (ht[i].parent == 0) 
        {
            if (ht[i].weight < ht[s1].weight) 
            {
                s1 = i;
            }
        }
    }
    
    
    for (i = 1; i <= n; i++) 
	{
		if (ht[i].parent == 0&&i!=s1) //针对未构造的才能选择   除去第一小的数列 
		{
			s2=i;选择一个对比 记录下标 
			break;
			
		}
	}

    for (i = s2+1; i <= n; i++) 
    {
        if (ht[i].parent == 0&&i!=s1) //除去第一小的数列 
        {
            if (ht[i].weight < ht[s2].weight) 
            {
                s2 = i;
            }
        }
    }
    
}
//第二种
void Select(HuffmanTree ht, int n, int &s1, int &s2) 
{
    int i, min1 = MAX, min2 = MAX;
    s1 = 0;
    s2 = 0;
    for (i = 1; i <= n; i++) 
    {
        if (ht[i].parent == 0) 
        {
            if (ht[i].weight < min1) 
            {
                min2 = min1;
                s2 = s1;
                min1 = ht[i].weight;
                s1 = i;
            }
            else if (ht[i].weight < min2) 
            {
                min2 = ht[i].weight;
                s2 = i;
            }
        }
    }
}
//第三种
void Select1(HuffmanTree ht, int n, int &s1, int &s2) 
{
    int i, min1 = MAX, min2 = MAX;
    s1 = 0;
    s2 = 0;
    for (i = 1; i <= n; i++) 
    {
        if (ht[i].parent == 0) 
        {
            i
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哈夫曼编码与译码(数据结构课程设计) 的相关文章

  • js判断输入框不能为空格或null值

    var sno sno val var sname sname val if sno indexOf gt 0 sno null sname indexOf gt 0 sname null alert 学号和名称不能为空格或null值 re
  • Git安装(Windows)

    一 下载 官网下载页面 https git scm com downloads 我选择的是Win 64位的安装版本 地址 https github com git for windows git releases download v2 3

随机推荐

  • ElasticSearch (五) Postman查询数据

    match all size from size match 返回指定字段 排序 sort range wildcard查询 合并查询语句 1 match all 匹配所有文档 match all 下面为查询结果 result size 例
  • 了解Wi-fi频段概念

    前言 信道带宽 应该了解wi fi频段 这样才能分析有多少信道带宽可用 以及如何在没有任何干扰 失真 的情况下有效地使用它 2 4GHz和5GHz频段可用于wi fi 2 4 GHz Wi Fi频段 在2 4 GHz频段 可用带宽为100
  • QT窗口缩放,自定义边框,无边框缩放拉伸

    目录 什么情况下需要自定义边框 效果图 一 基本思路 二 参考程序一 2 1 源码 2 2 思路说明 2 3 缺点说明 三 参考程序2 3 1 源码 3 2 思路说明 3 3 优缺点说明 四 参考程序3 4 1源码 4 2 思路说明 4 3
  • 无缘

    何时相逢 何时相见 闲暇的日子中 总抱着那一份的想念 昨日的黄昏 急匆匆赶到那约定的地点 道旁的杨树枝繁叶茂 晚风随着鸟鸣声悠扬 我徘徊在你的身旁 你驻足于她的身边 笑语从月牙一般的屋顶上掠过 而我却不屑看上你一眼 能否相逢 能否相见 寂静
  • React完整上手攻略(转)

    转自https typescript bootcss com tutorials react html 这篇快速上手指南会教你如何将TypeScript与React结合起来使用 在最后 你将学到 使用TypeScript和React创建工程
  • JDBC注册多个驱动

    我们可以在静态块中注册多个JDBC驱动 如下同时注册了mysql oracle驱动 try Class forName com mysql jdbc Driver Class forName oracle jdbc driver Oracl
  • ClearCanvas 源码解析 1

    国内 网上关于ClearCanvas开源的文章太少 最近刚好在做PACS 发现这个源码后 调试了一下 运行效果还可以 ClearCanvas是C 开源源码 对PACS的解析操作 底层和C 开源fo dicom有什么关系 还没有时间去研究 看
  • Python嵌套字典的遍历

    对于字典 d 1 1 2 2 3 4 44 5 55 6 7 7 1024 8 88 9 9 1 如何获取到 7 1024 中的1024 2 如何获取到所有key为7的value值 方法一 直接输出 d 1 1 2 2 3 4 44 5 5
  • C/C++面试题

    1 指针和引用的区别 答 引用是在C 中引入的 它们之间的区别有 1 非空区别 指针可以为空 而引用不能为空 2 可修改区别 如果指针不是常指针 那么就可以修改指向 而引用不能 3 初始化区别 指针在定义时可以不用初始化 而引用在定义的同时
  • python调用js文件

    python调用js文件生成参数 JS逆向 安装exejs与nodejs 调用js生成参数 JS逆向 我就随便找了一个网站https cloud kingdee com passport auth login 随手输入一个账号密码 抓包后发
  • 正在配置更新请勿关闭计算机怎么办,电脑开机“显示正在配置更新请勿关闭计算机”该怎么办?...

    电脑开机 显示正在配置更新请勿关闭计算机 该怎么办 以下文字资料是由 历史新知网www lishixinzhi com 小编为大家搜集整理后发布的内容 让我们赶快一起来看一下吧 电脑开机 显示正在配置更新请勿关闭计算机 该怎么办 系统打补丁
  • 法兰轴机械加工工艺及夹具设计(说明书+CAD图纸+工序卡)

    一 零件的分析 1 1零件的作用 题目所给定的零件车床输出轴 见图1 其主要作用 一是传递转矩 使车床主轴获得旋转的动力 二是工作过程中经常承受载荷 三是支撑传动零部件 零件上的 80mm孔与动力源 电动机主轴等 配合起定心作用 用10 2
  • 疫情期间谁干谁赚钱的三个小副业,普通人也能干,基本不用你投资

    一切生意的本质 都是低买高卖 只是有时 这个利差来自货物 有时利差来自服务而已 疫情过后 三个生意千万不要干 谁干谁倒闭 天王老子救不了你 还有三个生意 谁干谁发财 一年赚个三五十万 搞点生活费一点毛病都没有 我先说不能碰的行业啊 第一个服
  • Linux进程信号

    目录 信号入门 信号的本质 信号的处理 产生信号 通过终端按键产生信号 调用系统函数向进程发信号 由软件条件产生信号 硬件异常产生信号 阻塞信号 信号其他相关常见概念 信号在内核中的表示 sigset t 信号集操作函数 sigprocma
  • sudo rosdep init 遇到Website may be down问题以及解决方案

    sudo rosdep init 遇到Website may be down问题以及解决方案 1 在终端中输入sudo gedit etc hosts 2 文末添加199 232 28 133 raw githubusercontent c
  • 华为OD机试真题-去除多余空格【2023.Q1】

    题目内容 去除文本多余空格 但不去除配对单引号之间的多余空格 给出关键词的起始和结束下标 去除多余空格后刷新关键词的起始和结束下标 输入描述 输入为两行字符串 第一行 待去除多余空格的文本 用例保证如果有单引号 则单引号成对出现 且单引号可
  • PPTP/L2TP协议详解以及应用部署

    PPTP L2TP协议讲述以及应用部署 一 基本概念 PPTP PPTP是对端对端协议 PPP 的一种扩展 它采用了PPP所提供的身份验证 压缩与加密机制 PPTP能够随TCP IP协议一道自动进行安装 PPTP与Microsoft端对端加
  • 最好用的兼容多种数据库通用高效的大数据分页功能

    通用权限管理系统底层有一个通用分页查询功能 该功能可实现多种数据库的查询 支持多表关联分页查询 目前是最完善的分页功能实现 下面代码是使用的方法截图 后台代码截图1 后台代码截图2 后台代码截图3 后台代码截图4 后台代码截图5 页面后台代
  • 完整软件研发流程

    软件产品开发流程 下图所示的是一个软件产品开发大体上所需要经历的全部流程 1 启动 在项目启动阶段 主要确定项目的目标及其可行性 我们需要对项目的背景 干系人 解决的问题等等进行了解 并编制项目章程和组建项目团队 包括 产品经理 架构工程师
  • 哈夫曼编码与译码(数据结构课程设计)

    事先声明 哈夫曼编码中的选择函数Select思路借鉴了csdn大佬 非原创 吹一波彩虹屁 大佬真厉害 众所周知 数据结构这门课程是非常非常重要的 无论是找工作还是考研 你都能体会到 数据结构这本书的知识也非常的奇特美妙 希望大家好好学习研究