列表不改变试图解决"Delete node in Doubly Linked List"

List does not change in attempt to solve "Delete node in Doubly Linked List"

我正在处理 GeeksForGeeks 问题 Delete node in Doubly Linked List:

Given a doubly linked list and a position. The task is to delete a node from given position in a doubly linked list.

Your Task:

The task is to complete the function deleteNode() which should delete the node at given position and return the head of the linkedlist.

我的代码:

def deleteNode(self,head, x):
    # Code here
    temp=head        
    count_of_nodes=0
    prev_of_delete_node=None
    next_of_delete_node=None
    while temp != head:
        count_of_nodes+=1
        if count_of_nodes==x:
            prev_of_delete_node=temp.prev
            next_of_delete_node=temp.next
            #print(y.data,z.data)
            prev_of_delete_node.next=next_of_delete_node
            next_of_delete_node.prev=prev_of_delete_node
            break
        
        temp=temp.next
    
    if x==1:
        head=next_of_delete_node

执行以上代码后对双向链表没有影响。这是为什么?

一些问题:

  • while条件错误:立即为假,所以循环不会执行。

  • 当您使用 prev_of_delete_node.next 取消引用时,prev_of_delete_node 的值可能是 None。所以守护那个操作。 next_of_delete_node.

    相同
  • 该函数没有return任何东西,但它应该return删除后列表的头部

更正:

def deleteNode(self,head, x): 
    temp=head
    count_of_nodes=0
    prev_of_delete_node=None
    next_of_delete_node=None
    while temp:  # Corrected loop condition
        count_of_nodes+=1
        if count_of_nodes==x:
            prev_of_delete_node=temp.prev
            next_of_delete_node=temp.next
            if prev_of_delete_node:  # Guard
                prev_of_delete_node.next=next_of_delete_node
            if next_of_delete_node:  # Guard
                next_of_delete_node.prev=prev_of_delete_node
            break
        
        temp=temp.next
    # Should return:
    if x==1:
        return next_of_delete_node
    return head