当我尝试将链接列表的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
答案 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
你需要弄清楚角落案件