2016-11-28 96 views
-3

我一直在问到实现节点删除功能,其中i删除1个节点链表节点删除功能

为什么我的节点删除删除整个目录?

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

尝试'listofnodes.deleteNode(节点(8))'(这里有太多的参数) –

+0

我已经排序了这一点,但该函数删除所有节点,而不是所选的一个 –

回答

1

listofnodes.deleteNode(l,Node(8))

你逝去2的说法,与第三之一(self在声明)通过隐含

你声明的方法

def deleteNode (self,n):

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

+0

谢谢队友,我看不到它的一些原因。 –

+0

我现在排序该位,但删除功能是删除整个列表,而不是选择的节点? –

+0

给我给好评!我需要它得到畅通哈哈 –