【发布时间】:2021-06-19 08:11:56
【问题描述】:
我有一个节点结构:
struct Node {
int freq;
char letter;
string code;
Node* left;
Node* right;
Node* up;
};
我有一个输入阅读器,它应该存储每个字母中的一个以及它的频率,但是当通过 for 循环将节点分配给我的数组时,我得到了重复的字母。:
for(int i = 0; i<26 ; i++){
N[i] = new Node;
N[i]->freq = alphabet[i];
N[i]->letter = input[i]; //problem line
}
输入数组作为字符串传递给函数,Alphabet 是一个按字母顺序存储频率的数组。
我知道我收到了重复的字母,因为输入字符串直接放入数组中而不进行比较,但是我找不到一种方法让它检查N[] 中的其他节点以查看节点结构中的 char 成员已经被放入数组中。任何帮助表示赞赏。
【问题讨论】:
-
也许您会从
std::map<letter,Node*>中受益?请创建一个minimal reproducible example。 -
如果现有节点中有匹配项,您想做什么?你可以有一个嵌套循环来找到这样的:
for (int j = 0; j < i; ++j) if (N[j]->letter == input[i]) { <whatever> }。也许为您的问题添加一些细节/清晰度。