资源简介
哈夫曼编码.zip
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
#include
#include
#define MaxSize 100
#define MaxQueue 100
struct linklist //单链表结点类型
{
char data;
linklist *next;
};
struct pindu //每个字母出现的频度结点类型
{
char data; //字母
int weight; //权值
};
template
struct HTNode //哈夫曼结点类型
{
T data;//结点值
double weight;//权值
int parent;//双亲结点
int lchild;//左孩子结点
int rchild;//右孩子结点
};
struct HCode //哈夫曼编码类型
{
char cd[MaxSize]; //存放当前结点的哈夫曼编码
int start; //用cd[start..no]存放哈夫曼编码包括start和no
};
class sqlist
{
private:
linklist *head;
int Count; //计算个数
public:
pindu aa[100]; //存放频度的信息
sqlist()
{
head = new linklist[100];
head->next = NULL;
Count = 0;
}
void destorysqlist() //删除单链表,不能用析构,因为随时不用,会对哈夫曼数的构造造成影响
{
linklist *pre *p;
pre = head;
p = pre->next;
while (p != NULL)
{
delete pre;
pre = p; p = p->next;
}
delete pre;
}
int getCount() //得到权值个数
{
linklist *s;
int j = 0;
int count[127] = { 0 }; //设置初始化
s = head->next;
int num;
while (s)
{
num = s->data;
if (num != 32) //不计算空格出现的频度
{
count[num - 0]++;
}
s = s->next;
}
for (int i = 0; i < 127; i++)
{
if (count[i])
{
aa[j].data = i;
aa[j].weight = count[i];
j++;
}
}
Count = j;
return Count;
}
void creatlist() //创建单链表,把文件中的字母写进单链表中
{
linklist *s *r;
r = head;
FILE *fin;
char ch;
/*char filename[100] = { 0 };
cout << “请输入文件路径:“;
cin >> filename;*/
if ((fin = fopen(“H:\\test.txt“ “r“)) == NULL)
{
cout << “无法打开此文件“ << endl;
exit(0);
}
ch = fgetc(fin);
while (!feof(fin))
{
s = new linklist;
s->data = ch;
r->next = s;
r = s;
ch = fgetc(fin); //从fin 文件中打开
}
r->next = NULL;
fclose(fin);
/* cout << endl;
cout << endl;*/
}
void disp() //输出单链表内容,即文章内容
{
cout << endl << “文件内容打开如下“ << endl;
linklist *s;
s = head->next;
int count[257] = { 0 };
while (s)
{
cout << s->data;
s = s->next;
}
cout << endl;
}
void total() //利用一个数组,统计字母出现次数
{
linklist *s;
int j = 0;
int count[127] = { 0 }; //设置初始化
s = head->next;
int num;
while (s)
{
num = s->data;
if (num != 32) //不计算空格出现的频度
{
count[num - 0]++;
}
s = s->next;
}
cout << “统计“ << endl;
cout << “|---------------------------------------------|“ << endl;
cout << “| 字母 | 频度 |“ << endl;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-12-23 09:00 哈夫曼编码\
文件 12257 2016-12-23 08:49 哈夫曼编码\Haffuman.cpp
文件 1934225 2016-12-23 08:49 哈夫曼编码\Haffuman.exe
目录 0 2016-12-23 08:36 哈夫曼编码\三个要创建的txt实例\
文件 21 2016-12-23 07:52 哈夫曼编码\三个要创建的txt实例\test.txt
文件 12 2016-12-23 08:22 哈夫曼编码\三个要创建的txt实例\test1.txt
文件 46 2016-12-23 08:34 哈夫曼编码\三个要创建的txt实例\tex.txt
文件 706 2016-12-23 08:50 哈夫曼编码\先读.txt
文件 189212 2015-12-31 13:20 哈夫曼编码\实验报告.docx
- 上一篇:Spark 1.X 大数据平台
- 下一篇:PDF增效工具插件
相关资源
- 转换工具[zj1244].rar
- MultiDesk7.2.zip
- KEPServerEX_6.6注册.rar
- 1814.rar
- DevExpressV17.2.x破解工具百度云盘地址
- 卡券贩卖1.2.7微信卡券对接.zip
- 活字格注册机V4.02.rar
- pack.zip
- 人人商城V3短信宝短信插件.zip
- wz_packaging.zip
- 读取Steam绝地帐号密码.e
- 全网独一份,振动监测系统中的协波
- leadlagc.txt
- 西数硬盘固件包大全教学工具西数全
- antiv1.5.rar
- OfficeRegClean.zip
- 人人商城数据库字典.zip
- 新建MicrosoftWord文档.doc
- 113172211svpwm_get.zip
- 区块链毕业设计和参考资料.txt
- 以太坊和IPFS拍卖商城区块链项目实战
- persistencegoing_11028842.rar
- F35.e
- txt(2)
- 火车2万同义词库.txt
- 软件文档管理指南GB-T16680-1996.docx
- 2.tcl
- MAGNiTUDE.rar
- ads1.2(自行破解,有许可证文件).
- ManageEngineNetFlowAnalyzerProfessionalKeygen.
评论
共有 条评论