资源简介
本人本科期间学习数据结构写的实验,内容如下
1、输入一段报文,例如:
CAST CAST SAT AT A TASA
统计字符集合 { C, A, S, T },以及各个字符出现的频度(次数) W={ 2, 7, 4, 5 }。
2、建赫夫曼树,并输出各个字符的赫夫曼编码
3、输入编码01100……,能准确翻译成报文
4、要求有菜单。
代码片段和文件信息
/*
**author: Happig
**time: 2020-5-10
**function:
1、输入一段报文,例如:
CAST CAST SAT AT A TASA
统计字符集合 { C A S T },以及各个字符出现的频度(次数) W={ 2 7 4 5 }。
2、建赫夫曼树,并输出各个字符的赫夫曼编码
3、输入编码01100……,能准确翻译成报文
4、要求有菜单
*/
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn=2e5+10;
///采用数组模拟链表的方式存节点
struct node{
int wid; //w是节点权值id是对应数组下标
char c; //叶子节点为字母,其他节点为#
char now; //该节点上一条路径对应的01字符,0代表左子树,1代表右子树
int falr; //该节点的父节点和左右子节点
node(){}
node(int iint weightchar chint fatherint lchildint rchild){ //初始化函数
id=iw=weightc=ch;
fa=fatherl=lchildr=rchild;
}
bool operator < (const node &p) const { //实现优先队列less容器的小根堆
return w>=p.w;
}
}a[maxn];
const char dic[]={‘C‘‘A‘‘S‘‘T‘};
const int num[]={2745};
priority_queue p; //初始化用到的优先队列
string s;
int cnt; //总的节点数
///初始化函数
void init(){
while(!p.empty()) p.pop(); //优先队列清空
for(int i=0;i<4;i++){ //根节点入队
a[i]=node(inum[i]dic[i]000);
p.push(a[i]);
}
cnt=4; //此时队列的节点数
while(p.size()>1){ //当队列只剩一个根节点时结束循环
node u=p.top(); p.pop();
node v=p.top(); p.pop();
node nd=node(cntu.w+v.w00u.idv.id); //得到新的节点
a[u.id].fa=cnta[v.id].fa=cnt; //更新节点数组的两子节点节点的父亲下标
a[u.id].now=‘0‘a[v.id].now=‘1‘nd.now=nd.c=‘#‘; //更新路径字符
a[cnt++]=nd; //新增节点入字符数组
p.push(nd); //新增节点入队
}
}
///查看哈夫曼树的结构
void Test(){
for(int i=0;i cout< cout<
- 上一篇:dsp课程设计——语音加密.zip
- 下一篇:C++模拟存储器的分配与回收算法实现
相关资源
- C语言进阶源码---基于graphics实现图书
- 数据结构——C++语言描述 陈慧南
- 广东工业大学数据结构课程设计航空
- 数据结构课程设计扑克牌排序
- 数据结构各种算法实现(C++模板),
- (严版C语言版数据结构源码.rar
- 数据结构算法与应用--C++语言描述 书
- 数据结构大作业 停车场管理 C语言
- 北航991数据结构与C语言程序设计历年
- 用c写的航空订票系统 航班信息改变
- 数据结构课后习题答案(C++语言版)
- 数据结构C语言版第二版严蔚敏-课后答
- 交通咨询系统最短路径最小花费
- 数据结构五叉路口交通灯的设计
- 航空客运订票系统 c语言 数据结构作
- 池塘夜降彩色雨
- 关键路径的算法源代码
- 数据结构 C语言版 第2版 严蔚敏 李冬
- 数据结构与程序设计C++语言描述(中
- C语言数据结构课程设计之统计C程序单
- 数据结构——利用 Stack类 为其
- Data Structures and Algorithm Analysis in C++
- 数据结构课程设计 停车场管理系统
- C++ 数据结构书籍 - 清华大学 - 邓俊辉
- [算法:C语言实现(第1-4部分)基础知
- C++数据结构原理与经典问题求解源代
- 数据结构与程序设计C++描述(Kruse著)
- C语言数据结构pdf,严蔚敏
- c++ 数据结构 哈夫曼压缩&解压软件 控
- 数据结构c语言版第2版课后习题答案
评论
共有 条评论