Буквенный связанный список не в порядке - PullRequest
1 голос
/ 15 октября 2011

Я пытаюсь создать связанный список, отсортированный по имени и рейтингу.Часть сортировки рейтинга размещает все в правильном порядке, но по какой-то причине алфавитная сортировка не помещает ничего в правильном порядке (или даже в обратном порядке).Иногда сортировка по алфавиту в 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;
}

Вот функции, доступные мне в классе Winery:

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 Ответ

1 голос
/ 15 октября 2011

Кажется, вы сравниваете const char* указатели вместо того, чтобы сравнивать их содержимое.Используйте strcmp или std::string для сравнения строк лексикографически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...