Python 从单链表中删除节点

Python 从单链表中删除节点,python,algorithm,data-structures,linked-list,Python,Algorithm,Data Structures,Linked List,一位采访者问我以下关于“单链表”的问题 Q.在单链表中,如果我们删除一个节点,那么我们需要如下重新链接: # deleting current_node say node 3 previous_node = node2 node3 = previous_node.next next_node = node3.next previous_node = next_node 因此,如果我们没有上一个节点(这只是面试官的一个问题),那么您将如何链接下一个节点 我的答案是:在单链表中没有向后遍历的选项,

一位采访者问我以下关于“单链表”的问题

Q.在单链表中,如果我们删除一个节点,那么我们需要如下重新链接:

# deleting current_node say node 3
previous_node = node2
node3 = previous_node.next
next_node = node3.next
previous_node = next_node
因此,如果我们没有上一个节点(这只是面试官的一个问题),那么您将如何链接下一个节点

我的答案是:在单链表中没有向后遍历的选项,因为当前的_节点没有关于前一个节点的任何信息。但他对我的回答不满意

谁能给我点光吗

谢谢

这里有一个方法:-

  • 从头部开始,直到当前->下一步==目标

  • 当前->下一步=目标->下一步

  • 删除目标


  • 问:他从单个链接列表中删除了一个节点,但他没有上一个节点的引用,是否有方法将上一个节点与下一个节点重新链接

    如果列表是循环的呢?然后,可以使用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
    

    现在,它将返回反向链表。

    那么问题是什么?删除后如何将节点从上一个链接到下一个节点。例如,他删除了第三个节点,他想链接第二个和第四个节点,但他没有第二个节点的信息。他用Python问这个问题?使用了什么类型的删除?我认为目标不可用,因为它已被删除。@Vikramhat未获得u?目标已被删除。现在我们想将其上一个节点链接到上一个目标->下一个节点。@当有人问这样的问题时,你唯一能做的是,这不是一个合乎逻辑的问题,并向他解释原因,也许他希望你给出这样的答案。@vikram,我现在正是这么想的,但在试图找出答案时,我无法辩称:)HI dbasic,他提到的是一个单链表,感谢反向代码。然后我希望下一个目标节点必须存储在某个地方。那么维克拉姆·巴特的答案就在这里。