一位采访者问我“单链表”的以下问题。
Q值。如果我们删除一个节点,在单个链表中,我们需要重新链接如下:
# deleting current_node say node 3
previous_node = node2
node3 = previous_node.next
next_node = node3.next
previous_node = next_node
所以,如果我们没有previous_node(这只是面试官提出的问题),那么你将如何链接下一个节点。
我的答案:在单个链表中没有选项可以遍历,因为current_node没有关于前一个节点的任何信息。但他对我的回答并不满意。
有人可以给我一些启示。
由于
答案 0 :(得分:4)
以下是这样做的方法: -
开始头部和遍历直到当前 - >下一个==目标
current-> next = target-> next
删除目标
答案 1 :(得分:1)
Q值。他从单个链表中删除了一个节点,并且他没有上一个节点的引用,有没有办法将前一个节点与next.next节点重新链接?
如果列表是循环的呢?然后,可以重新链接O(n)复杂度。
在你的程序中
def go_backwards(node_ref):
if node_ref == None:
return
head = node_ref
_next = node_ref.next
go_backward(_next)
print head,
您正在以相反的顺序打印列表,而不是实际反转它。
def go_backwards(node_ref):
head = node_ref
_next = node_ref.next
if _next == None:
return node_ref
node = go_backward(_next)
_next.next = head
return node
现在,它将返回反向链接列表。