资源简介
基于vc++6.0实现哈夫曼编码及文件译码操作,统计源文件中字符数目,对字符进行哈夫曼编码,以此作为密码对文件进行加密,得到加密后的二进制文件,从二进制文件中读取内容,使用哈夫曼树进行译码得到译码后的文件,并与源文件进行对比。
代码片段和文件信息
#include “Huffman.h“
Bool Isempty(BTree Bt)
{
return (Bt.Root==NULL);
}
T DataBt(BTree Bt)
{
return Bt.Root->data;
}
BTree LchildBt(BTree Bt)
{
BTree BT;
BT.Root=Bt.Root->lchild;
return BT;
}
BTree RchildBt(BTree Bt)
{
BTree BT;
BT.Root=Bt.Root->rchild;
return BT;
}
BTNode* NewNode()
{
BTNode* p=(BTNode*)malloc(sizeof(BTNode));
if(IS_FULL(p))
{
fprintf(stderr“the memeny is full\n“);
exit(1);
}
return p;
}
void CreateBT(BTree *BT)
{
BT->Root=NULL;
}
void MakeBT(BTree* BtT xBTree *LtBTree *Rt)
{
BTNode* p=NewNode();
p->data=x;
p->lchild=Lt->Root;
p->rchild=Rt->Root;
Bt->Root=p;
}
void BreakBT(BTree* BtT *xBTree* LtBTree* Rt)
{
BTNode *p=Bt->Root;
if(p)
{
*x=p->data;
Lt->Root=p->lchild;
Rt->Root=p->rchild;
Bt->Root=NULL;
free(p);
}
}
void Visit(T x)
{
cout< }
void Preorder(BTree Bt)
{
if(!Isempty(Bt))
{
Visit(DataBt(Bt));
// cout<code.letter;
Preorder(LchildBt(Bt));
Preorder(RchildBt(Bt));
}
}
void Inorder(BTree Bt)
{
if(!Isempty(Bt))
{
Inorder(LchildBt(Bt));
Visit(DataBt(Bt));
Inorder(RchildBt(Bt));
}
}
void Postorder(BTree Bt)
{
if(!Isempty(Bt))
{
Postorder(LchildBt(Bt));
Postorder(RchildBt(Bt));
Visit(DataBt(Bt));
}
}
int SizeofBt(BTree Bt)
{
int ss1s2;
if(Bt.Root==NULL)return 0;
else
{
s1=SizeofBt(LchildBt(Bt));
s2=SizeofBt(RchildBt(Bt));
s=s1+s2+1;
return s;
}
}
int max(int xint y)
{
if(x>=y)
return x;
else return y;
}
int DepthofBt(BTree Bt)
{
if(Bt.Root==NULL) return 0;
else
return 1+max(DepthofBt(LchildBt(Bt))DepthofBt(RchildBt(Bt)));
}
BTNode* Copy(BTNode* p)
{
BTNode* q;
if (!p) return NULL;
q=NewNode();
q->data=p->data;
q->lchild=Copy(p->lchild);
q->rchild=Copy(p->rchild);
return q;
}
BTree CopyBt(BTree Bt)
{
BTree a;
a.Root=Copy(Bt.Root);
return a;
}
void swap(int xint y)
{
int z;
z=x;
x=y;
y=z;
}
void bubble_sort(BTree arr[]int lenint *k1int *k2)
{
int ij;
int BtBt1;
int min=25536;
for(i=0;i {
if(min>DataBt(arr[i]))
{
min=DataBt(arr[i]);
Bt=i;
}
}
min=25536;
for(j=0;j {
if(min>DataBt(arr[j])&&Bt!=j)
{
min=DataBt(arr[j]);
Bt1=j;
}
}
*k1=Bt;
*k2=Bt1;
}
void Fmin(BTree ht[]int *k1int *k2int k)
{
bubble_sort(htkk1k2);
}
BTree CreateHuffman(Letter w[]int n)
{
BTree zero;
BTree ht[MaxSize];
int ikk1k2;
CreateBT(&zero);
for(i=0;i {
MakeBT(&ht[i]w[i].count&zero&zero);
ht[i].Root->code.letter=w[i].data;
// cout<code.letter;
}
for(k=n-1;k>0;k--)
{
Fmin(ht&k1&k2k);
MakeBT(&ht[k1]DataBt(ht[k1])+DataBt(ht[k2])&ht[k1]&ht[k2]);
ht[k2]=ht[k];
}
// cout< return ht[0];
}
void printfstr(char *s)
{
int i;
for(i=0;s[i]!=‘\0‘;i++)
cout<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 399 2018-10-07 22:11 code.txt
目录 0 2018-10-07 22:11 Debug\
文件 379312 2018-10-07 22:11 Debug\Huffman.obj
文件 0 2018-10-07 22:11 Debug\Huffman.sbr
文件 467968 2018-10-07 22:11 Debug\String.bsc
文件 606258 2018-10-07 22:11 Debug\String.exe
文件 884140 2018-10-07 22:11 Debug\String.ilk
文件 298575 2018-10-07 15:05 Debug\String.obj
文件 2271924 2018-10-07 22:11 Debug\String.pch
文件 1377280 2018-10-07 22:11 Debug\String.pdb
文件 0 2018-10-07 15:05 Debug\String.sbr
文件 107520 2018-10-07 22:11 Debug\vc60.idb
文件 135168 2018-10-07 22:11 Debug\vc60.pdb
文件 6363 2018-10-07 22:11 Huffman.cpp
文件 55516 2018-10-07 22:11 huffman.dat
文件 398 2018-10-07 14:50 Huffman.h
文件 1450 2018-10-07 15:05 String.cpp
文件 3592 2018-09-29 00:46 String.dsp
文件 535 2018-09-29 00:46 String.dsw
文件 566 2018-10-07 14:50 String.h
文件 58368 2018-10-07 22:23 String.ncb
文件 50688 2018-10-07 22:23 String.opt
文件 1327 2018-10-07 22:11 String.plg
文件 10189 2018-10-07 15:10 student.txt
文件 10189 2018-10-07 22:11 STUDENTCopy.txt
相关资源
- 单片机的C语言程序设计与应用——基
- C语言流程图生成器 C语言流程图生成
- Butterworth滤波器C语言实现
- 测绘程序设计C语言描述
- C语言简化编译器前端 编译原理 LR1
- C语言编写的电子地图管理系统
- 直方图均衡化——C语言实现
- c语言停车场管理收费系统
- 合泰单片机C语言教程
- 基于单片机的多路温控系统
- C语言教程很全面,很详细的一本书
- 最新真正二级C语言机试300题(含填空
- 单片机C语言库 STC89C51/52 AT89C52/51
- C语言数据结构严蔚敏版魔王语言
- C语言-CodeBlocks-学生成绩管理系统.zi
- C语言经典算法大全
- C语言流程图生成器56102
- C语言socket实现文件
- 基于A*算法的十五数码程序 C语言版
- 餐饮管理系统源代码(亲测)
- 编程精粹:编写高质量C语言代码中文
- C语言-ATM机模拟系统exe及源码
- C语言实现2的指数次点的FFT
- 2018锐捷网络C语言内部笔试试题
- C语言Windows程序设计 机房收费管理系
- PE文件解析器的原理C语言代码
- C语言贪吃蛇
- MSP430系列单片机实用C语言程序设计及
- 数据结构C语言版Word
- C语言国际标准C99(ISO_IEC_9899_1999+TC1
评论
共有 条评论