在“无”旁边设置列表

时间:2016-11-16 18:09:24

标签: python linked-list

当我尝试将链接列表的next节点的p属性指向None时,我使用p.next = None。但是,如果我想将p.next对应的节点设为None怎么办?

例如,当尝试旋转链接列表时,该链接列表以节点next等于None结束,我想创建新列表的最后一个元素& #39; s next指向None,但我想我会继续删除它所指向的元素。

这是我按k位置轮换列表的代码。如果您想查看问题的完整说明,请参阅here

def rotate(head, k):
'''
head is pointer to the head, k is the number of positions to rotate
'''
if not head or k == 0:
    return head

p = head
d = head
counter = 1

while p.next != None:
    counter += 1
    p = p.next

out = ListNode(0)

if k % counter == 0:
    return head
if counter < k:
    counter = counter % k

for _ in range(counter):
    p.next = d
    d = d.next
    p = p.next

out = p
d.next.next = None

return out

1 个答案:

答案 0 :(得分:0)

听起来您想要获取最后k个值并将它们添加到前面。

p.next是下一个节点。一般情况下,当我们想要更改p next时,我们需要抓住temp = p.next p.next = newNode,然后我们就可以继续。

在这种情况下,我会找到列表的长度,设置tail.next = head,减去k(计算环绕),然后前进到N-k,并且设置该节点p.next = None

类似的东西:

p, len, prev = head, 0, None
while p:
  prev = p
  p = p.next
  len += 1
# prev is tail, set it's next to head
prev.next = head
# find the node to detach
p = head
for i in xrange(len):
  p = p.next
p.next = None

你需要弄清楚角落案件