我在尝试在qt上的GUI中显示正确的调试消息时遇到问题。我正在实现基于用户输入的单词的二叉树。对于输入的每个单词,应显示相应的调试消息。
例如:
用户输入:a
然后用户输入b
调试消息word is greater than a
我遇到的问题是,如果用户要在调试消息中键入第三个单词是不正确的。
用户输入c
调试消息仍显示为word is greater than a
但我希望它能显示word is greater than b
。
如果用户输入重复的字词,则该消息应显示'word' has already been detected
。此消息仅在用户输入并复制的原始单词时才有效。对于上面的示例,如果用户再次输入a
,则会显示正确的消息。如果他们再次输入b
,则不会显示重复的消息。
我该如何解决这个问题?
QStringList tree::VerboseModeinsert(NodePtr &ptr, QString aWord)
{
aWord.remove(QRegExp("[[]"));
aWord.remove(QRegExp("[]]"));
if(!(aWord.contains(QRegExp("[0123456789]"))))
{
aWord = aWord.toLower();
if(ptr != NULL)
{
if(aWord < ptr->word)
{
insert(ptr->below, aWord);
QString a = "Word is less than ";
QString b = ptr->word;
verboseList << a + b;
}
else if(aWord > ptr->word)
{
insert(ptr->above, aWord);
QString a = "Word is greater than ";
QString b = ptr->word;
verboseList << a + b;
}
else
{
ptr->occurence++;
QString c = " has already been detected";
verboseList << aWord + c;
}
}
else
{
ptr = new WordTree;
ptr->word = aWord;
ptr->below = NULL;
ptr->above = NULL;
ptr->occurence = 1;
}
}
return verboseList;
}
答案 0 :(得分:0)
似乎你忘了更新指向最后插入的指针
试试这个:
...
if(aWord < ptr->word)
{
...
ptr = ptr->below;
}
else if(aWord > ptr->word)
{
...
ptr = ptr->above;
}
...
PS:由于你没有提供MCVE,我不能完全确定我在做什么,但我认为这篇文章很难推断出你没有改变指向最后插入的指针。