сортировка связанных списков путем изменения ссылок

0

Я пытаюсь сортировать связанный список, изменяя ссылки, не меняя данные. Я использую select sort.i не знаю, где я иду не так. Я начинаю, помогите мне.

struct node
{
    int   data;
    node* link;
};

node* p;    

void sort()
{
    node* temp = p;
    node* save;
    node* prev;
    node* tprev;
    node* push = new node;

    tprev = NULL;
    for (; temp != NULL; temp = temp->link)
    {
        push = temp->link;
        for (; push != NULL; push = push->link)
        {
            if (push->data<temp->data)
            {
                save->link  = temp->link;
                temp->link  = push->link;
                push->link  = save->link;
                prev->link  = temp;
                tprev->link = push;
            }

            prev = push;
        }

        tprev = temp;
    }
}
  • 1
    Не могли бы вы последовательно отформатировать код, это выглядит плохо. Чистый код, это первый шаг к рабочему коду. Кроме того, поместите пробелы между операторами.
  • 0
    я очень новичок здесь, я не знаю, как отформатировать это было бы полезно, если вы скажете, как я могу сделать
Показать ещё 25 комментариев
Теги:
linked-list

1 ответ

2
Лучший ответ
void sort(){
    node *temp, *push;
    node *tprev, *pprev;
    node *save;

    tprev = NULL;
    for (temp = p; temp != NULL; temp = temp->link){
        pprev = temp;
        for (push=temp->link; push != NULL; push = push->link){
            if (push->data < temp->data){
                save = temp->link;
                temp->link = push->link;
                if(save == push)
                    push->link = temp;
                else
                    push->link = save;
                if(pprev != temp)
                    pprev->link = temp;
                if(tprev)
                    tprev->link = push;
                else
                    p = push;
                save = temp;
                temp = push;
                push = save;
            }
            pprev = push;
        }
        tprev = temp;
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню