c语言哈夫曼压缩文本,哈夫曼文本压缩C语言实现.doc

/*文件中有些参数定义的比较大,主要是为了适应较大文件的压缩*/

#include

#include

#include

#include//用以删除多余的中间文件

#define M 100000000000//最大字符数

int op,co[100];//编码表的扫描指针,简易栈co[]

typedef struct Hfnode //哈弗曼树结点类型

{

int data;//权值域

char zimu;//存储字母

struct Hfnode *Lson,*Rson,*next;//儿子链域和森林链域

}Hfnode,*Hfptr;

typedef struct snode//静态数组结点类型

{

char c;//字符

int f1;//频度

}snode;

typedef struct Lnode//编码表结点类型

{

char c;

struct Lnode *next;

}Lnode,*Lptr;

void gotoxy(int x,int y){

COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );

}

void paint1()

{

int i,j;

for(j=0;j<4;j++)

{for(i=0;i<70;i++)//简易画线代码,呵呵

putchar(95);

putchar(10);putchar(10);putchar(10);

}

gotoxy(0,4);

printf("请输入需打开的文件路径:");

gotoxy(0,7);

printf("请输入压缩文件的保存路径:");

gotoxy(0,10);

printf("此次文件压缩率为:");

gotoxy(0,13);

}

void paint2()

{

int i,j;

for(j=0;j<4;j++)//画4行直线

{for(i=0;i<70;i++)//简易画线代码,呵呵

putchar(95);

putchar(10);putchar(10);putchar(10);

}

gotoxy(0,4);

printf("请输入解压文件的路径:");

gotoxy(0,7);

printf("请输入还原文件的保存路径:");

gotoxy(0,10);

printf("还原结果:");

}

int putdata(Lptr strhead)//输入函数

{

Lptr p;

FILE*fp;

int i=0;

char infile[30];

p=strhead;

gotoxy(0,5);

scanf("%s",infile);

if((fp=fopen(infile,"rb"))==NULL)

{

printf("文件打开错误!\n");

exit(0);

}

while(!feof(fp))

{

p->c=fgetc(fp)&0xFF;

p->next=new Lnode;

p=p->next;

/*putchar(ch[i]);*/

i++;

}

putchar(10);

fclose(fp);

return(i-1);

}

int stat(Lptr p,snode ch2[],int num)//统计函数

{

int i,j,last=0;

for(i=0;i

{

for(j=0;ch2[j].c!=p->c&&j!=last;)

j++;

if(j==last)

{

ch2[j].c=p->c;

ch2[j].f1=1;

last++;

}

else ch2[j].f1++;

p=p->next;

}

return(last);

}

void order(snode ch2[],int n)//冒泡排序

{

int i,j,k,t;

char a;

for(i=0;i

{

k=i;

for(j=i+1;j

if(ch2[j].f1

if(k!=i)

{

t=ch2[i].f1;

a=ch2[i].c;

ch2[i].c=ch2[k].c;

ch2[i].f1=ch2[k].f1;

ch2[k].c=a;

ch2[k].f1=t;

}

}

}

Hfptr i

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

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

相关文章

labview随机数序列_labview产生随机数

熟悉 LabVIEW 环境。 环境。 2. 创建一个 VI。 。 发生一个值为 0.0&#xff5e;1.0 的随机数 a,放大 10 倍后与某一常数 b &#xff5e;, 比较, 比较,若 a>b,则指示......5-12 前面板中建立量表的显示控件,然后右键创建属性节点中的滑块颜色前景色,程序框 图中用一随机数乘…

thinkphp单入口和多入口的访问方法

完全是参考thinkphp的官网资料 现在, 基本上都是 用 单入口 的方式来做的! thinkphp可创建多入口和单入口两种模式&#xff0c;本文主要讲解创建方法和两者的区别。 TP版本&#xff1a;3.1.3 前端&#xff1a;Home&#xff0c;后台&#xff1a;Admin 一. 创建方法 单入口&#…

git菜单形式的_添加“Git Bash Here”到右键菜单

之前安装了git的时候&#xff0c;清晰的记得右键菜单里是有“Git Bash Here”这个选项的&#xff0c;非常方面。后来不知道为啥突然没有了&#xff0c;就像搞回来。创建步骤打开注册表&#xff0c;定位到HKEY_CLASSES_ROOT\Directory\Background\shell(如果Background下面没有s…

c语言josn序列化和反序列化,Flutter 中 JSON 的序列化和反序列化

前言Flutter 中没有类似于 Java 中 Gson/Jackson 这样的 JSON 序列化库。因为这些库都是通过反射实现的&#xff0c;而 Flutter 中不支持反射。其实 Dart 是支持反射的&#xff0c;只是 Flutter 禁用了而已。Flutter 在 release 版本中会去除没有使用的代码&#xff0c;优化包大…

python相关函数_python列表相关函数

1、python中可用于列表的函数 &#xff08;1&#xff09;cmp(list1, list2)  比较两个列表的元素 &#xff08;2&#xff09;len(list)  列表元素个数 &#xff08;3&#xff09;max(list)  返回列表元素最大值 &#xff08;4&#xff09;min(list)  返回列表元素最小值…

财务模块的一些基础概念

财务会计承担着企业总体信息管理和传递的职能&#xff0c;无论企业采用何种运营模式、经营何种业务&#xff0c;都离不开财务的支持&#xff0c;大多数运营和管理流程均与财务存在着接口&#xff0c;为此&#xff0c;优化、高效的财务运作模式和流程成为确保企业良性发展和业务…

if mybatis tk 多个_面试题:mybatis 中的 DAO 接口和 XML 文件里的 SQL 是如何建立关系的?...

前言这是 mybatis 比较常问到的面试题&#xff0c;我自己在以前的面试过程中被问到了2次&#xff0c;2次都是非常重要的面试环节&#xff0c;因此自己印象很深刻。这个题目我很早就深入学习了&#xff0c;但是一直没有整理出来&#xff0c;刚好最近一段时间由于工作太忙&#x…

多机器使用setnx 设置同一个key_Redisson分布式锁的简单使用

做一个积极的人编码、改bug、提升自己我有一个乐园&#xff0c;面向编程&#xff0c;春暖花开&#xff01;一&#xff1a;前言我在实际环境中遇到了这样一种问题&#xff0c;分布式生成id的问题&#xff01;因为业务逻辑的问题&#xff0c;我有个生成id的方法&#xff0c;是根据…

java学习笔记3--类与对象的基础

1、面向对象的程序设计方法概述 面向对象的程序设计 与结构化程序设计方法相比&#xff0c;更符合人类认识现实世界的思维方式&#xff0c;已成为程序设计的主流方向 涉及的主要概念&#xff1a;抽象、封装、继承、多态 对象 现实世界中&#xff1a;万物皆对象&#xff0c;都具…

孟德尔随机化周报 (12.14)

欢迎报名2023年郑老师团队课程&#xff01; 郑老师科研统计培训&#xff0c;包括临床数据、公共数据分析课程等&#xff0c;欢迎报名 孟德尔随机化,Mendilian Randomization&#xff0c;简写为MR&#xff0c;是一种在流行病学领域应用广泛的一种实验设计方法&#xff0c;利用公…

android计算器弹窗,android实现简易计算器

本文实例为大家分享了android实现简易计算器展示的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下效果图&#xff1a;一、如图&#xff0c;首先布局计算器主页显示activity_main.xmlxmlns:tools"http://schemas.android.com/tools"android:layout_width&qu…

多选取值_机制砂如何控制MB值和石粉含量

随着环保政策的加强和河沙采挖禁令的收紧&#xff0c;机制砂逐渐成为建筑用砂的主流。但很多砂石厂生产设备落后、生产条件简陋、生产工艺不完善导致生产的机制砂品质低&#xff0c;质量不能满足高等级混凝土的要求。不仅卖不上价格&#xff0c;还浪费了矿石资源&#xff0c;挣…

python爬虫哪个选择器好用_Python网络爬虫四大选择器用法原理总结

前几天小编连续写了四篇关于Python选择器的文章&#xff0c;分别用正则表达式、BeautifulSoup、Xpath、CSS选择器分别抓取京东网的商品信息。今天小编来给大家总结一下这四个选择器&#xff0c;让大家更加深刻的理解和熟悉Python选择器。 一、正则表达式 正则表达式为我们提供了…

C++primer习题--第3章

【习题 2.11】 编写程序&#xff0c;要求用户输入两个数——底数&#xff08; base&#xff09;和指数&#xff08; exponent&#xff09;&#xff0c;输出底数的指数次方的结果。 #include <iostream> #include <math.h> #include <string> using namespace…

eclipse配置python开发环境_eclipse怎样搭建Python开发环境

eclipse通过pydev插件也是可以搭建出Python开发环境的。今天小编我就来给大家分享一下eclipse怎样搭建Python开发环境的经验哦。 工具/原料 电脑 eclipse Python pydev插件链接&#xff1a;https://pan.baidu.com/s/1VIK5H_ZbC6DsOlNwy2OwLw 密码&#xff1a;kg8a 方法/步骤 1 …

android光照传感器,详解 android 光线传感器 light sensor的使用

调用anroid的光线传感器使用。实现效果图&#xff1a;MainActivity.Javapackage hk.ust.cse.comp107x.ligthsensor;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import …

hive中实现行转列_漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)

全文由下面几个部分组成&#xff1a;先分享一下拉链表的用途、什么是拉链表。通过一些小的使用场景来对拉链表做近一步的阐释&#xff0c;以及拉链表和常用的切片表的区别。举一个具体的应用场景&#xff0c;来设计并实现一份拉链表&#xff0c;最后并通过一些例子说明如何使用…

算法导论:堆排序

堆 堆是一个数组&#xff0c;它可以被看成一个近似的完全二叉树&#xff0c;树上的每一个结点对应数组中的一个元素。除去最底层外&#xff0c;该树是完全充满的&#xff0c;而且从左到右填充。 用数组A表示堆&#xff0c;从数组第1个元素开始&#xff0c;数组中第i&#xff08…

python网址太长_【原创】分享一个自己用python写的长网址转短网址工具,给需要的你...

[Python] 纯文本查看 复制代码import requests import json from tkinter import * class Get_url_short(): def __init__(self): self.source 2540340328 self.url https://api.t.sina.com.cn/short_url/shorten.json? def get_short(self): try: url_long self.tk_url_lo…

扩展坞可以把手机投到显示器吗_解锁4K 60Hz毕亚兹USB Type-C扩展坞体验

现在很多白领办公、学生上网课都会使用到笔记本电脑&#xff0c;尤其是近两年的轻薄本&#xff0c;为了追求轻量化&#xff0c;砍掉了原本很多的接口&#xff0c;转而使用Type-C来代替&#xff0c;从而导致接驳外设的时候非常不方便。特别是那种只给了一个USB标准接口的电脑&am…