2011-10-15 15 views
1

名前と評価の両方によってソートされたリンクリストを作成しようとしています。レーティング・ソート・パートは、すべてを正しい順序で配置しますが、何らかの理由でアルファベット・ソートでは、正しい順序(または逆の順序)で何も配置されません。場合によっては、List :: Insertのアルファベットソート部分でprintByRating()関数が中断されることがあります。誰かが助けてくれますか?アルファベット順のリンクされたリストが順序通りでない

void List::insert(const Winery& winery) 
{ 
    Node * prev = NULL; 
    Node * curr = NULL; 
    Node * newNode = new Node(winery); 
    newNode->nextByName = NULL; 
    newNode->nextByRating = NULL; 

    //sort by name 
    curr = headByName; 

    while (curr!=NULL && curr->item.getName() < newNode->item.getName()) 
    { 
     prev = curr; 
     curr = curr->nextByName; 
    } 

    newNode->nextByName = curr; 
    if(prev == NULL) 
     headByName = newNode; 
    else 
     prev->nextByName = newNode; 

    //sort by rating 
    curr = headByRating; 

    while (curr!=NULL && curr->item.getRating() > newNode->item.getRating()) 
    { 
     prev = curr; 
     curr = curr->nextByRating; 
    } 

    newNode->nextByRating = curr; 
    if(prev == NULL) 
     headByRating = newNode; 
    else 
     prev->nextByRating = newNode; 
} 

Here'reワイナリークラスで私に利用可能な機能::ここで

は私の挿入機能である

const char * const getName() const { return name; } 
const char * const getLocation() const { return location; } 
const int getAcres() const { return acres; } 
const int getRating() const { return rating; } 

答えて

1

あなたがconst char*ポインタを比較する代わりに、その内容を比較しているようです。文字列を辞書的に比較するには、strcmpまたはstd::stringを使用します。

関連する問題