Я не считаю, что дублированные номера курсов сами по себе являются проблемой.
Здесь в вашей программе есть ошибка:
if course.number <= self.head.number: # start of the list
self.head = course
return
Если вы когда-либо выполняли последние две строки в этом фрагменте кода ваш список становится одноэлементным списком, содержащим course
и ничего больше.
Сравните это со следующим оператором if
, где, если условие истинно, вы выполняете
course.next = cursor.next
Вам нужно установить course.next
на что-то в обоих местах.
Также обратите внимание, что если course.number <= self.head.number
не верно во время первого вызова insert_helper
, оно не будет истинным ни в одном из рекурсивные вызовы либо. Возможно, было бы лучше обработать этот случай до первого вызова этой функции.