0001 /****************************************************************************************** 0002 * 支持Huffman编码的数据结构 0003 ****************************************************************************************** 0004 * 采用统一的接口,为Huffman_PQ_ComplHeap和Huffman_PQ_LeftHeap共用 0005 * 编译之前,可通过在对应的工程中设置DSA_PQ_ComplHeap或DSA_PQ_LeftHeap选择 0006 ******************************************************************************************/ 0007 #include <iostream> 0008 using namespace std; 0009 0010 constexpr int N_CHAR = 0x7F - 0x20; //仅以可打印字符为例 0011 0012 //Huffman树 0013 #include "Huffman/HuffChar.h" //引入Huffman(超)字符 0014 #include "Huffman/HuffTree.h" //引入Huffman树 0015 #include "Huffman/HuffTable.h" //引入Huffman编码表 0016 #include "Huffman/HuffCode.h" //引入HuffCode二进制编码 0017 0018 //Huffman森林 0019 #if defined(DSA_PQ_LIST) 0020 #include "Huffman_PQ=List/Huffman_Forest_PQ=List.h" 0021 #elif defined(DSA_PQ_COMPLHEAP) 0022 #include "Huffman_PQ=ComplHeap/Huffman_Forest_PQ=ComplHeap.h" 0023 #elif defined(DSA_PQ_LEFTHEAP) 0024 #include "Huffman_PQ=LeftHeap/Huffman_Forest_PQ=LeftHeap.h" 0025 #elif defined(DSA_PQ_STACK_QUEUE) 0026 #include "Huffman_PQ=Stack+Queue/Huffman_Forest_PQ=Stack+Queue.h" 0027 #else //朴素方案:直接用List实现的Huffman森林 0028 #include "Huffman/Huffman_Forest_List.h" 0029 #endif