m0_67918426 2022-04-10 16:51 采纳率: 50%
浏览 6
已结题

哈夫曼树的构建,调用函数没有被执行,如何解决?(语言-c++)

void Select(HuffmanTree &HT, int n,int s1, int s2) {
int min;//定义临时变量保留最小值
for (int i = 0; i < n; i++) {
if (HT[i].parent == 0) {
min = i; break;
}
}
for (int i = 0; i < n; i++) {
if (HT[i].parent == 0 && HT[i].weight < HT[min].weight) min = i;
s1 = min;
}
for (int i = 0; i < n; i++) {
if (HT[i].parent == 0&&i!=s1) {
min = i; break;
}
}
for (int i = 0; i < n; i++) {
if (HT[i].parent == 0&&i!=s1&& HT[i].weight < HT[min].weight) min = i;
s2 = min;
}
}
void CreatHuffmanTree(HuffmanTree &HT, map<char, float>arr, const char*filename) {
int n = arr.size();
if (n <= 1)return;
int m = 2 * n - 1;
HT = new HTNode[m + 1];
map<char, float>::iterator iter;
int j;
for (iter = arr.begin(), j = 1; iter != arr.end(); iter++,j++) {
HT[j].weight = iter->second, HT[j].parent = 0, HT[j].lchild = 0, HT[j].rchild = 0;
}
for (int i = n + 1; i <= m; i++) {
HT[j].weight = iter->second, HT[j].parent = 0, HT[j].lchild = 0, HT[j].rchild = 0;
}
for (int i = n + 1; i <= m; ++i) {
int s1, s2;
Select(HT, i - 1, s1, s2);
HT[s1].parent = i, HT[s2].parent = i;
HT[i].lchild = s1, HT[i].rchild = s2;
HT[i].weight = HT[s1].weight + HT[s2].weight;
}
FILE *f;
f = fopen(filename, "wt");
if (f == NULL)cout << "open file is error" << "\n";
fprintf_s(f, "%s\n", "构建的Huffman树如下:");
HuffmanTree p2 = HT;
for(int i=1;i<=m;i++,p2++){
fprintf_s(f, "%f %d %d\n", p2->weight, p2->parent, p2->lchild);
}
fclose(f);
}

int main()
{
map<char, float>arr;
HuffmanTree HT;
frequency("d:/input.txt", "output.txt", arr);
CreatHuffmanTree(HT, arr, "t3.txt");
system("pause");
return 0;
}
main中调用CreatHuffmanTree后,没有执行

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 4月18日
    • 创建了问题 4月10日

    悬赏问题

    • ¥50 苹果MGIE项目部署缺少emb权重
    • ¥15 采用ansys进行机翼在特定路径下的打孔过程中的受力分析
    • ¥15 单片机adb主机连接手机,usb调试密钥无法保存
    • ¥15 已知X和Y有以下关系,求X和Y的关系式
    • ¥15 net core 同时编辑怎么防止数据多保存了
    • ¥15 matlab做ba模型让其在ba和er规则下生长
    • ¥50 有偿!centos curl port设置问题
    • ¥15 请问Quartus的Verilog代码怎么写?
    • ¥100 Mac 版foxmail 收邮件问题
    • ¥15 QWebEngineView