我创建了一个程序,它将读取文本文件并将单词作为字符串放入链接列表,以及它们在整个文本文件中的频率计数。它只打印每个单词的出现次数及其出现的总次数。
我的程序还加载了一个黑名单,它应该将黑名单链表与词云(或词频)链表进行比较,然后从词频列表中删除列入黑名单的词。
我已经尝试过几种方法。以下是我的第三个版本。我想要做的是为每个节点添加一个布尔值,当一个节点等于黑名单中的一个单词时,布尔值将为真。但是,我无法使用以下代码正确打印它。我已经搜索过了,似乎找不到正确的语法来将布尔值添加到链表中的节点。
编辑#3:
void wordCloud::compareWith(wordCloud& wordList, wordCloud& badList){
wordNode *wordListTemp, *blacklistTemp, *temp = NULL;
unsigned int counter = 0;
for (blacklistTemp = badList.head; blacklistTemp; blacklistTemp = blacklistTemp->next){
cout << blacklistTemp->myWord << "\n";
for (wordListTemp = wordList.head; wordListTemp; wordListTemp = wordListTemp->next){
if (wordListTemp->myWord != blacklistTemp->myWord){
wordListTemp->blacklist = false;
if (wordListTemp->blacklist = false){
cout << wordListTemp->myWord << " <"
<< wordListTemp->freq_count << ">\n";
}
}
else if (wordListTemp->myWord == blacklistTemp->myWord){
cout << blacklistTemp->myWord << " " << wordListTemp->myWord << "\n";
wordListTemp->blacklist = true;
if (wordListTemp->blacklist = true)
cout << wordListTemp->myWord << "\n";
}
}
//counter++;
cout << blacklistTemp->myWord << " " << wordListTemp->myWord << "\n";
}
system("pause");
}
这并不完整,但据我所知。问题是它只打印 true if,并且不会打印任何 false if。即使我切换了值,它仍然只会打印真正的 if。所以我假设我正在处理这个错误。“标记”节点为真和“标记”节点为假的正确方法是什么?所有 cout 都用于调试目的。稍后我将删除或评论这些内容。