Я работаю через Крекинг Coding Интервью 6-е изд, и я уверен в их определении «следующий»Python: Перемещение через связанный список «рядом»
Их код, определяющий «Linked List» можно найти here. Я пытаюсь выполнить второе упражнение, которое должно найти kth из конечного элемента случайного связанного списка.
Мой код:
from LinkedList import LinkedList
def kth_to_last(ll, k):
num_seen = 0
length_list = count_length(ll)
val = ll.head
# ISSUE IS HERE
while val.next != None:
print 'hi'
val.next = val.next.next
"""
while num_seen < (length_list - k):
val = val.next
num_seen += 1
"""
return val.next
# Counts length of LL
def count_length(ll):
val = ll.head
count = 1
while val.next != None:
count += 1
val.next = val.next.next
return count
ll = LinkedList()
ll.generate(10, 0, 99)
print(ll)
kth_to_last(ll, 3)
Он рассчитывает через список просто отлично, но для первого определения, я не могу заставить его двигаться через связанный список (он не будет печатать «привет» в все).
Я планирую сделать что-то вроде того, что я прокомментировал (у них также есть «хвост», поэтому я могу попробовать это), но я смущен, почему я могу перемещаться по списку, просто отлично в пределах «count_length», но то я не могу переместиться через него в «kth_to_last»?
Edit: Для того, чтобы уточнить, если я печатаю val.next в 'kth_to_last' имеет значение 'None'
edit2:
Если я закомментировать "count_length", следующий происходит точно хорошо. Может ли кто-нибудь объяснить мне, почему вызов этой функции изменяется следующим образом. Он застрял в конце списка?
Мой код:
def kth_to_last(ll, k):
"""
num_seen = 0
length_list = count_length(ll)
"""
# Start at head
val = ll.head
while val.next != None:
print val.next
val = val.next
Это выводит список только штрафом
Спасибо @wildwilhelm, что имеет смысл, я исправлю это. – Monica
Итак, проблема связана с моим вызовом «count_length», потому что, если я прокомментирую это, тогда val_next в порядке. Почему подсчет длины изменяет ll? – Monica
Спасибо @wildwilhelm, я только что видел ваш полный комментарий - это имеет смысл. Спасибо! – Monica