链表节点删除功能

时间:2016-11-28 14:50:21

标签: python linked-list nodes python-3.5

我被要求实施节点删除功能,其中我删除1个节点

为什么我的Node删除整个列表?

class Node(object):
    def __init__(self, value):
        self.value=value
        self.next=None
        self.prev=None

class List(object):
    def __init__(self):
        self.head=None # start of list
        self.tail=None # end of list

    def insert(self,n,x):
        if n!=None:
            x.next=n.next
            n.next=x
            x.prev=n
            if x.next!=None:
                x.next.prev=x
        if self.head==None:
            self.head=self.tail=x
            x.prev=x.next=None
        elif self.tail==n:
            self.tail=x

    def display(self):
        values=[]
        n=self.head
        while n!=None:
            values.append(str(n.value))
            n=n.next
        print ("List: ",",".join(values))

    def deleteNode (self,n):
        if n.prev!=None:
            n.prev.next = n.next
        else:
            self.head = n.next

        if n.next  != None:
            n.next.prev = n.prev
        else:
            self.tail = n.prev

if __name__ == '__main__':
    listofnodes=List()
    listofnodes.insert(None, Node(4))
    listofnodes.insert(l.tail,Node(6))
    listofnodes.insert(l.head,Node(8))
    listofnodes.insert(l.head,Node(5))
    listofnodes.insert(l.head,Node(9))
    listofnodes.insert(l.head,Node(10))
    listofnodes.deleteNode(Node(8)) # I want to delete Node 8 from listofnodes
    listofnodes.display()

在调用节点删除之前显示整个列表,运行后它显示没有元素

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

listofnodes.deleteNode(l,Node(8))

你传递2个参数,第三个参数(声明中的self)隐式传递

您将方法声明为

def deleteNode (self,n):

所以它只接受一个参数(n)