-1
Я хочу, чтобы отсортировать LinkedList и я писал этот код:LinkedList рода без повторения
courseList *sortList(courseList *list)
{
//
if(list == NULL || list->nextCourse == NULL)
return list; // the list is sorted.
//replace largest node with the first :
//1- find largest node :
courseList *curr, *largest,*largestPrev ,*prev;
curr = list;
largest = list;
prev = list;
largestPrev = list;
while(curr != NULL) {
if(strcmp(curr->courseName,largest->courseName)<0)/*curr->num > largest->num*/ {
largestPrev = prev;
largest = curr;
}
prev = curr;
curr = curr->nextCourse;
}
//largest node is in largest.
//2- switching firt node and largest node :
courseList *tmp;
if(largest != list)
{
largestPrev->nextCourse = list;
tmp = list->nextCourse;
list->nextCourse = largest->nextCourse;
largest->nextCourse = tmp;
}
// now largest is the first node of the list.
// calling the function again with the sub list :
// list minus its first node :
largest->nextCourse = sortList(largest->nextCourse);
return largest;
}
Например, мой LinkedList, как это:
MATH101 CSE100 MATH259 BLAW203 MATH101 STAT253 STAT253 MATH259 MATH259 HIST111 STAT253
И это то, что я получаю:
BLAW203 CSE100 HIST111 MATH101 MATH101 MATH259 MATH259 MATH259 STAT253 STAT253 STAT253
Но я хочу, чтобы выяснить, как избавиться от этого повторения
Написать отдельную функцию, чтобы удалить дубликаты, и называют это перед сортировкой , – Barmar
без вызова какой-либо функции, могу ли я организовать этот код? – SemihY
Возможно, добавьте случай, когда 'strcmp (curr, наибольший) == 0', чтобы удалить узел. – Barmar