0001 /****************************************************************************************** 0002 * 初始化Huffman森林:根据传入的频数统计表freq,为每个字符创建一棵树 0003 ****************************************************************************************** 0004 * forest基于优先级队列实现,此算法适用于符合PQ接口的任何实现方式 0005 * 为Huffman_PQ_List、Huffman_PQ_ComplHeap和Huffman_PQ_LeftHeap共用 0006 * 编译前对应工程只需设置相应标志:DSA_PQ_List、DSA_PQ_ComplHeap或DSA_PQ_LeftHeap 0007 ******************************************************************************************/ 0008 HuffForest initForest(uint32_t* freq) { 0009 HuffForest F(nullptr, 0); //以PQ实现的Huffman森林 0010 for (char i = 0x20; i < 0x7F; i++) //为每个字符生成一棵树,并插入森林 0011 { F.insert(HuffTree().insert({freq[i-0x20], i})); } 0012 return F; 0013 }