2015-11-08 3 views
0

Я ищу, чтобы получить некоторую помощь в понимании того, как я буду реализовывать отсортированный связанный список в точке вставки? Ниже приведена функция addItem с возможностью добавления в начале списка или в конце. Можно ли вставить (таким образом, сортировку) в зависимости от значения, указанного в var.number;?C - Сортировка связанных списков при вставке

struct structName { 
    int number; 
    int number2; 
    char aString; 
    struct structName *next; 
}; 

struct structName *head = NULL; 
struct structName *curr = NULL; 
struct structName *element = NULL; 

struct Struct var; 

struct structName* addItem(struct structName var, bool appendList) { 

    struct structName *pointer = (struct structName*)malloc(sizeof(struct structName)); 

    pointer->someString = var.aString; 
    pointer->aNumber = var.number2; 
    pointer->anotherNumber = var.number; 
    pointer->next = NULL; 

    if(appendList) { 
     curr->next = pointer; 
     curr = pointer; 
    } 
    else { 
     pointer->next = head; 
     head = pointer; 
    } 

    return pointer; 
} 
+0

Существует ** бесчисленных ** вопросов, касающихся связанных списков. Я уверен, что вы найдете свой ответ в Google или путем поиска в StackOverflow. – Downvoter

+3

Возможный дубликат [Как вы вставляете в отсортированный список?] (Http://stackoverflow.com/questions/1320460/how-do-you-insert-into-a-sorted-linked-list) – Kaz

ответ

0

все просто. если вы хотите вставить в отсортированный список. Затем перед вставкой списка вам нужно пройти через список, пока не перейдите в конец списка или не найдете значение узла, которое больше текущего значения списка. Затем введите свой список.

+0

.. . Таким образом, список остается отсортированным, но вы можете не принимать команды типа «вставить в голову» или «вставить в конец», потому что тогда список становится несортированным. –

+0

Да, это правда. – Sigstop