资源简介
C++实现自适应(动态)哈夫曼编码,读入txt文本编码并将结果输出到指定txt文本中

代码片段和文件信息
#include “adaptiveHuffman.h“
int AdaptiveHuffman::sum = 1;
BinaryTree::BinaryTree(int numint weight){
p_root = new Node(nullptrnullptrnullptr);
p_root->num = num;
p_root->weight = weight;
}
BinaryTree::~BinaryTree()
{
deleteNode(p_root);
}
bool BinaryTree::swap(Node * p_nodeA Node * p_nodeB)
{
if(p_nodeA==nullptr||p_nodeB==nullptr||p_nodeA==p_nodeB)
return false;
Node *pTemp;
if (getBrotherState(p_nodeA)==LeftChild) {
if (getBrotherState(p_nodeB)==LeftChild) {
pTemp = p_nodeA->parent->leftChild;
p_nodeA->parent->leftChild = p_nodeB->parent->leftChild;
p_nodeB->parent->leftChild = pTemp;
}
else {
pTemp = p_nodeA->parent->leftChild;
p_nodeA->parent->leftChild = p_nodeB->parent->rightChild;
p_nodeB->parent->rightChild = pTemp;
}
}
else {
if (getBrotherState(p_nodeB)==LeftChild) {
pTemp = p_nodeA->parent->rightChild;
p_nodeA->parent->rightChild = p_nodeB->parent->leftChild;
p_nodeB->parent->leftChild = pTemp;
}
else {
pTemp = p_nodeA->parent->rightChild;
p_nodeA->parent->rightChild = p_nodeB->parent->rightChild;
p_nodeB->parent->rightChild = pTemp;
}
}
pTemp = p_nodeA->parent;
p_nodeA->parent = p_nodeB->parent;
p_nodeB->parent = pTemp;
return true;
}
bool BinaryTree::addNode(Node * parent Node * p_child Brother brotherState)
{
if(parent==nullptr||p_child==nullptr)
return false;
if (brotherState == LeftChild) {
if (parent->leftChild != nullptr) {
std::cout << “error:left child exist!“ << std::endl;
return false;
}
parent->leftChild = p_child;
}
else if (brotherState == RightChild) {
if (parent->rightChild != nullptr) {
std::cout << “error:right child exist!“ << std::endl;
return false;
}
parent->rightChild = p_child;
}
else {
std::cout << “error:brotherState is wrong!“ << std::endl;
return false;
}
p_child->parent = parent;
return true;
}
Node * BinaryTree::findNode(Node *p)
{
Node *p_node = p_root;
std::queue queue;
queue.push(p_node);
while (!queue.empty()) {
p_node = queue.front();
if (p_node == p) {
return p_node;
}
queue.pop();
if (p_node->leftChild != nullptr) {
queue.push(p_node->leftChild);
}
if (p_node->rightChild != nullptr) {
queue.push(p_node->rightChild);
}
}
return nullptr;
}
bool BinaryTree::setNodeNum(Node* p_node int num)
{
if(p_node==nullptr)
return false;
else {
p_node->num = num;
return true;
}
}
bool BinaryTree::isAncestor(Node * p_nodeChild Node * p_nodeAncestor)
{
while (p_nodeChild != p_root) {
if (p_nodeChild ==
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7599 2018-12-20 15:18 adaptiveHuffman.cpp
文件 1449 2018-12-20 15:13 adaptiveHuffman.h
- 上一篇:Linux环境下——C语言聊天室项目
- 下一篇:算术编码c++
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- CCS FFT c语言算法
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- 小波变换算法 c语言版
- 3des加密算法C语言实现
- C++纯文字DOS超小RPG游戏
- DES加密算法C语言实现
- VC++MFC小游戏实例教程(实例)+MFC类库
- 线性回归算法c语言实现
- 基于C语言的模拟退火算法
- C语言实现的DES对称加密算法
- 用VC6.0实现多边形扫描线填充算法
- c语言编写的货郎担算法
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
评论
共有 条评论