python3 — удаление узла

#data-structures #python-3.6

#структуры данных #python-3.6

Вопрос:

Этот код предназначен для удаления узла из заданной позиции в связанном списке.

Почему мы должны помещать return head в конец?

 def deleteNode(head, position):
   
   if position == 0:
       return head.next
   
   else:
       curr = head
       for _ in range(position):
           prev=curr
           curr = curr.next
       prev.next=curr.next
       return head
  

Комментарии:

1. В случае position == 0 , когда функция фактически не вносит никаких изменений в список; он просто возвращает второй узел и позволяет пользователю использовать это возвращаемое значение для изменения своего списка. Таким образом, пользователь, вероятно, собирается писать mylist = deleteNode(mylist) . Чтобы это сработало, вам нужно вернуть первый узел списка даже в том случае, когда вы фактически удалили узел из списка.

Ответ №1:

Потому что вам нужно вернуть список функции, которая вызвала эту функцию, чтобы отслеживать ее. head это ссылка на начало списка, поэтому это способ вернуть список туда, где он был.