Сортированный связанный список и проблема функции addSorted. - PullRequest
1 голос
/ 26 сентября 2011

Так что я работал над этим некоторое время, и я не могу понять, что не так.Эта функция addSorted добавляет все правильные значения в их респектабельные места отсортированного массива, но когда она входит в добавление 0 в начало списка, программа не завершится и результат не отобразится.Кто-нибудь знает, почему это может быть?

void addSorted(Data * newData){
    if(head == NULL) {
        head = new LinkNode(newData);
        return;
    }
    LinkNode * current = head;
    LinkNode * previous = NULL;
    while(current != NULL) {
        if(newData->compareTo(current->data) == -1) {
            LinkNode * newNode = new LinkNode(newData);
            newNode->next = current;
            if(previous == NULL) {
                current->next = newNode;
            }
            else {
                newNode->next = previous->next;
                previous->next = newNode;
            }
        return;
        }
    previous = current;
    current = current->next;
    }
previous->next = new LinkNode(newData);
}

1 Ответ

0 голосов
/ 26 сентября 2011

Означает ли результат сравнения, что -1, что он меньше, чем текущий узел?

И если предыдущий == NULL, вы устанавливаете current-> рядом с указателем newNode, что означает, что они указывают друг на друга, поскольку newNode-> next также указывает на текущий узел.1004 * Я думаю, что корень вашей проблемы может быть в этом, на самом деле.

       newNode->next = current;
       current->next = newNode;

Надеюсь, изложив это так, вы поймете, о чем я говорю.

...