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