资源简介
基于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++ 程序设计苏小红版 答案
- 下一篇:数据结构二叉树家谱
相关资源
- 数据结构二叉树家谱
- 基于顺序表的学生信息管理系统.cpp
- 数据结构课程设计 排序综合(C++)
- 二叉排序树C语言版的!.c
- 数据结构课设 运动会分数统计
- 循环列队数据结构课题舞会配对的问
- 校园导航系统c++数据结构
- 实现简单银行叫号模拟系统(C++版)
- 数据结构课设排序算法的可视化演示
- 算法与数据结构_C语言版_答案(1-8章
- 数据结构课程设计CC++描述[阮宏一][程
- 数据结构课程设计学生成绩管理系统
- 交通咨询系统-C语言
- C++数据结构与算法源代码第四版清华
- 数据结构课程设计,飞机订票系统源
- 数据结构与算法c语言 严蔚敏 代码实
- 数据结构c语言实现严蔚敏版
- 八皇后问题加实验报告
- B-树和B+树的源代码
- 敢死队问题纯C语言编写
- 数据结构上机作业 一元稀疏多项式计
- 数据结构习题集与答案(C语言版严蔚
- 《数据结构(c++描述)》教材习题解
- 任务书2一元稀疏多项式计算器数据结
- 数据结构上机 由用户输入n个10以内的
- 991“数据结构与C语言程序设计”考试
- 数据结构类库c++版
- 堆排序算法严蔚敏数据结构
- 数据结构约瑟夫环实习报告及源码
- 《数据结构——C++实现》第二版课本
评论
共有 条评论