【发布时间】:2017-04-16 10:36:01
【问题描述】:
我正在完成第 6 版的《Cracking the Coding Interview》,不确定他们对“下一个”的定义
他们定义“链表”的代码可以在here找到。我正在尝试第二个练习,即从随机链表的末尾元素中找到第 k 个。
我的代码:
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)
它在列表中计数很好,但是对于第一个定义,我无法让它在链接列表中移动(它根本不会打印'hi')。
我打算做一些我已经注释掉的事情(他们也定义了“尾巴”,所以我可能会尝试一下),但我很困惑为什么我可以在“count_length”内很好地浏览列表,但是后来我似乎无法在“kth_to_last”内移动它?
编辑:澄清一下,如果我在 'kth_to_last' 中打印 val.next,它的值为 'None'
编辑2:
如果我注释掉“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
这可以很好地打印列表
【问题讨论】:
标签: python linked-list singly-linked-list