【发布时间】:2014-04-29 02:29:24
【问题描述】:
我有一个函数可以在字母表中的适当位置将单词添加到链表中。它应该按 A-Z 排序,但由于某种原因,它是相反的。我认为问题是我使用 string.compare() 错误,但它可能是别的东西。这可能是一个简单的解决方法,我只是盯着它看了一段时间,希望有一个新的视角!
void LinkedList::addWord( const string& theWord )
{
ListNode* toAdd = new ListNode(theWord, NULL);
if( !mpHead ){
mpHead = toAdd;
return;
}
if(mpHead->word.compare(theWord) < 0){
toAdd->pNextNode = mpHead;
mpHead = toAdd;
return;
}
if(mpHead->pNextNode == NULL){
mpHead->pNextNode = toAdd;
return;
}
ListNode* pCurrent = mpHead;
ListNode* pCurrentNext = mpHead->pNextNode;
while( pCurrent->pNextNode->word.compare(theWord) > 0 )
{
pCurrent = pCurrentNext;
pCurrentNext = pCurrentNext->pNextNode;
}
toAdd->pNextNode = pCurrent->pNextNode;
pCurrent->pNextNode = toAdd;
}
【问题讨论】:
-
不应该是 if(mpHead->word.compare(theWord) > 0) 找到第一个字母顺序较高的单词时插入单词吗?
标签: c++ string sorting linked-list alphabetical