構造体のメンバーを出力するのに少し問題があります。これは私がこれまでに持っているものです:
struct Code
{
char letter;
string sequence;
}
void createCode(HuffmanNode *root, string codestr, Code *codeBook, int count)
{
if(root->getRight() == NULL && root->getLeft() == NULL)
{
Code code;
code.letter = root->getLetter();
code.sequence = codestr;
codeBook[count] = code;
count++;
}
else
{
createCode(root->getLeft(), codestr + "1", codeBook, count);
createCode(root->getRight(), codestr + "0", codeBook, count);
}
}
これはすべて正常に動作しますが、コードブックのコードの配列でメンバー シーケンスを出力しようとすると、主に次のようになります。
string codestr;
count = 0;
Code codeBook[256];
createCode(root, string codestr, codeBook, count); //root is already created
for(int i = 256; i >= 0; i--)
{
if(isalpha(codeBook[i].letter))
cout << codeBook[i].sequence << " ";
}
最後に保存した文字列のみが出力されます。誰かが修正を知っていて、なぜこれが起こっているのでしょうか? 誰かが助けることができれば、それは素晴らしいことです!