资源简介
基于Huffman树的文件压缩C语言源码,自己做的数据结构课程设计。可以安装到系统,实现了文件的右键压缩功能。

代码片段和文件信息
//文件解压 ????
#include “HuffmanTree.h“
#define NAMESIZE 500
void NextByte(int achar*b)
{
for(int i=0;i<8;i++)
if(a){b[7-i]=48+a%2;a=a/2;}
else b[7-i]=‘0‘;
b[8]=‘#‘;
}
void NextByte_2(int achar*c)
{
char b[8];int i=0;
for( i=0;i<8;i++)
if(a){b[7-i]=48+a%2;a=a/2;}else break;
for(int k=0;k c[k]=b[8-i+k];
// for(;i<7;i++)aa[8*j-8+i]=‘0‘;
c[i]=‘#‘;c[i+1]=‘#‘;
}
Status ReWrite(HuffmanTree &TFILE*print nchar*rezipname)
{
//
char c[9]*s;HuffmanTree p=T+2*n-1;int a=fgetc(pr)w=0;//w为写入文件的数
if(!feof(pr))NextByte(ac);
else NextByte_2(ac);
s=c;
FILE*pw=fopen(rezipname“wb“);
while(!feof(pr)){
if(*s==‘0‘&&p->lchild)p=T+p->lchild;
else if(*s==‘1‘&&p->rchild)p=T+p->rchild;
if(!p->lchild&&!p->rchild){
if(*s==‘0‘){w=(T+p->parent)->lchild-1;fwrite(&w11pw);}
else {w=(T+p->parent)->rchild-1;fwrite(&w11pw);}
p=T+2*n-1;
}
s++;
if(*s==‘#‘){
a=fgetc(pr);
if(!feof(pr))NextByte(ac);
else NextByte_2(ac);
s=c;
}
}
fclose(pw);
return OK;
}
void rezip(const char*s)
{
//s 为压缩文件的地址和文件名。
if(!s){system(“pause“);exit(1); }
printf(“进行文件解压\n“);
FILE*pr*pw; char sname[NAMESIZE];
int ai=0jn=256m=2*n-1;UInt32 w[256];
HuffmanCode HChc;HuffmanTree HT;
char rezipname[NAMESIZE]=“re“;
i=0;
while(s[i]!=‘.‘)i++;i--;
j=0;
while(s[i]!=92&&i>=0)sname[j++]=s[i--];
i=0;
while(--j>=0){rezipname[2+i]=sname[j];i++;}
rezipname[2+i]=‘.‘;i++;
pr=fopen(s“rb“);
if(!pr){
printf(“无法打开解压文件\n“);exit(1);
}
j=0;a=fgetc(pr);
while(j<4){
rezipname[2+i]=a;if(j<3)a=fgetc(pr);j++;i++;
}
HT=(HuffmanTree)malloc(sizeof(HTNode)*(m+1));
HT[0].weight=0;HT[0].parent=0;HT[0].lchild=0;HT[0].rchild=0;
for(i=1;i<=n;i++){
HT[i].weight=0;//此时不需要权重,所以可以随便赋值。
HT[i].lchild=0;
HT[i].rchild=0;
}
for(i=n+1;i<=m;i++)
{
HT[i].weight=0;//此时不需要权重,所以可以随便赋值。
fread(&a21pr);HT[i].lchild=a;HT[a].parent=i;
fread(&a21pr);HT[i].rchild=a;HT[a].parent=i;
}
HT[m].parent=0;
//此时HT为霍夫曼树,
ReWrite(HTprnrezipname);
fclose(pr);
printf(“解压成功!\n“);
}
int main(int argcchar *argv[])
{
const char*str2;str2=argv[1];
if(argc>0)rezip(str2);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1150 2012-11-30 16:44 文件压缩源文件\123.ico
文件 3064 2013-11-02 13:41 文件压缩源文件\HuffmanTree.h
..A..H. 3066 2013-11-02 13:41 文件压缩源文件\HuffmanTree.h~
文件 611 2013-12-31 23:08 文件压缩源文件\laucher_1.reg
文件 2353 2013-11-06 23:30 文件压缩源文件\rezip_1.cpp
文件 30230 2013-12-28 15:42 文件压缩源文件\rezip_1.exe
文件 4641 2013-12-28 15:42 文件压缩源文件\rezip_1.o
文件 953 2013-12-19 22:47 文件压缩源文件\setup_C++RAR.cpp
文件 27047 2013-12-19 22:47 文件压缩源文件\setup_C++RAR.exe
文件 1850 2013-12-19 22:47 文件压缩源文件\setup_C++RAR.o
文件 2061 2013-12-28 15:31 文件压缩源文件\zip_1.cpp
文件 29419 2013-12-28 15:31 文件压缩源文件\zip_1.exe
文件 4151 2013-12-28 15:31 文件压缩源文件\zip_1.o
目录 0 2014-02-25 15:38 文件压缩源文件
----------- --------- ---------- ----- ----
110596 14
- 上一篇:双语版 c++ 程序设计苏小红版 答案
- 下一篇:数据结构二叉树家谱
相关资源
- 利用C++哈希表的方法实现电话号码查
- 学校超市选址问题(数据结构C语言版
- 数据结构,迷宫问题C语言版源代码
- DSDEMO-C演示(数据结构C语言版 严蔚敏
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 实验报告:数据结构长整数四则运算
- 数据结构教程李春葆第五版书中例题
- 吕鑫vc6c++数据结构视频源码
- 数据结构教程李春葆第五版课后答案
- 李春葆课后习题答案(数据结构教材
- 数据结构1800题 题+答案(全)
- 数据结构(C语言版)ppt课件,清华,
- c++常用游戏算法及数据结构设计
- 数据结构超全面复习导图
- 《Data Structures and Algorithm Analysis in C
- 数据结构C语言版教学笔记严蔚敏
- 数据结构C语言版期末考试试题(有答
- 多功能计算器实现C++代码以及代码详
- C语言数据结构银行客户排队
- C语言实现栈操作
- 简易学生管理系统源码 数据结构 大作
- 数据结构与C语言综合习题集
- 数据结构实验——赫夫曼树相关
- C语言进阶源码---基于graphics实现图书
- 数据结构——C++语言描述 陈慧南
- 广东工业大学数据结构课程设计航空
- 数据结构课程设计扑克牌排序
- 数据结构各种算法实现(C++模板),
- (严版C语言版数据结构源码.rar
评论
共有 条评论