【问题标题】:Unable to remove nodes from linked list except the first node无法从链表中删除除第一个节点外的节点
【发布时间】:2020-03-26 21:45:22
【问题描述】:

我正在学习链表的基础知识,但在删除节点时遇到了困难。当我通过写list1.RemoveNode("Dog")删除第一个节点时,代码成功返回元素

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()

【问题讨论】:

  • 貌似是Python,请加P.L.

标签: python-3.x linked-list singly-linked-list


【解决方案1】:

RemoveNode 中的这一行

prev.next = HeadVal.nextval

应该是

prev.nextval = HeadVal.nextval

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    相关资源
    最近更新 更多