2016-12-04 8 views
0
if (!head->next) { 
    head->next = newNode; /* if only dummy node, add node to end of list */ 
} else { 
    /* iterates through linked list until a node is found that is greater than the new node */ 
    while (head->next && strcmpa((head->next)->data, newNode->data) < 0) 
     head = head->next; 
    if (!head->next) { 
     head->next = newNode; /* adds new node to end list if no nodes are greater in value */  
    } else { 
     newNode->next = head->next;  /* points new node to the next node */ 
     head->next = newNode; /* points current node to new node */ 
    } 
} 

Как отредактировать этот код, чтобы он отклонил любой новый узел, чье поле данных равно узлу, который уже находится в списке?Добавить только новые данные в связанный список в C

+1

Вам нужно перебрать все узлы в настоящее время присутствует в связанном списке, и всегда проверяйте, если значение нового узла равно значению текущего узла. Если это так, остановите итерацию. Если ни один узел в списке не имеет то же значение, что и новый узел, тогда цикл завершится только на последнем узле в списке, где «currentNode-> next» равен NULL. На этом этапе вам нужно добавить новый узел, сделав последний узел в списке точкой для нового узла. Однако, если вы хотите, чтобы ваш список отсортирован, вы можете запустить часть кода, которую вы предоставили, чтобы вставить отсортированную. – Polb

ответ

2

изменению последнего else { в

else if(strcmp(head->next->data, newNode->data)) { 
+0

Вы да человек. Благодарю. Смотря на этот код так долго, я даже не знал, что это значит. – namarino

+0

@namarino Рад помочь: D –

 Смежные вопросы

  • Нет связанных вопросов^_^