无法从链表中删除除第一个节点以外的节点
Unable to remove nodes from linked list except the first node
我正在学习链表的基础知识,但在删除节点时遇到困难。当我通过编写 list1.RemoveNode("Dog")
删除第一个节点时,代码成功 returns 元素
Cat
Mouse
Rabbit
但是当我执行命令 list1.RemoveNode("Cat")
时,代码不会删除节点值“Cat”。相反,它仍然打印出所有节点值:
Dog
Cat
Mouse
Rabbit
事实上,RemoveNode
函数只对“狗”有效。我不确定出了什么问题。我在下面附上了我的代码。
class Node():
def __init__(self,dataval=None):
self.dataval=dataval
self.nextval=None
class Linkedlist():
def __init__(self,headval=None):
self.headval=headval
def printlist(self):
headval=self.headval
while headval is not None:
print(headval.dataval)
headval=headval.nextval
def RemoveNode(self, Removekey):
HeadVal = self.headval
if (HeadVal is not None):
if (HeadVal.dataval == Removekey):
self.headval = HeadVal.nextval
HeadVal = None
return
while (HeadVal is not None):
if HeadVal.dataval == Removekey:
break
prev = HeadVal
HeadVal = HeadVal.nextval
if (HeadVal == None):
return
prev.next = HeadVal.nextval
HeadVal = None
Node1=Node("Dog")
Node2=Node("Cat")
Node3=Node("Mouse")
Node4=Node("Rabbit")
list1=Linkedlist()
list1.headval=Node1
Node1.nextval=Node2
Node2.nextval=Node3
Node3.nextval=Node4
list1.RemoveNode("Cat")
list1.printlist()
RemoveNode 中的这一行
prev.next = HeadVal.nextval
应该是
prev.nextval = HeadVal.nextval
我正在学习链表的基础知识,但在删除节点时遇到困难。当我通过编写 list1.RemoveNode("Dog")
删除第一个节点时,代码成功 returns 元素
Cat
Mouse
Rabbit
但是当我执行命令 list1.RemoveNode("Cat")
时,代码不会删除节点值“Cat”。相反,它仍然打印出所有节点值:
Dog
Cat
Mouse
Rabbit
事实上,RemoveNode
函数只对“狗”有效。我不确定出了什么问题。我在下面附上了我的代码。
class Node():
def __init__(self,dataval=None):
self.dataval=dataval
self.nextval=None
class Linkedlist():
def __init__(self,headval=None):
self.headval=headval
def printlist(self):
headval=self.headval
while headval is not None:
print(headval.dataval)
headval=headval.nextval
def RemoveNode(self, Removekey):
HeadVal = self.headval
if (HeadVal is not None):
if (HeadVal.dataval == Removekey):
self.headval = HeadVal.nextval
HeadVal = None
return
while (HeadVal is not None):
if HeadVal.dataval == Removekey:
break
prev = HeadVal
HeadVal = HeadVal.nextval
if (HeadVal == None):
return
prev.next = HeadVal.nextval
HeadVal = None
Node1=Node("Dog")
Node2=Node("Cat")
Node3=Node("Mouse")
Node4=Node("Rabbit")
list1=Linkedlist()
list1.headval=Node1
Node1.nextval=Node2
Node2.nextval=Node3
Node3.nextval=Node4
list1.RemoveNode("Cat")
list1.printlist()
RemoveNode 中的这一行
prev.next = HeadVal.nextval
应该是
prev.nextval = HeadVal.nextval