列表不改变试图解决"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
我正在处理 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