2016-11-28 2 views
-3

Я попросил, чтобы реализовать функцию удаления узла, где я удалить 1 узелLinked-список узлов функция удаления

почему мой узел удалить удалить весь список ?.

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

try 'listofnodes.deleteNode (Node (8))' (слишком много аргументов здесь) –

+0

Я отсортировал этот бит, но функция удаляет все узлы, а не выбранный –

ответ

1

В

listofnodes.deleteNode(l,Node(8))

вы передаете 2 аргумента, с третьей один (self в объявлении) передается неявно

Вы объявляете метод как

def deleteNode (self,n):

, поэтому он принимает только один параметр (n)

+0

Спасибо, я не мог его увидеть некоторая причина. –

+0

ive теперь сортировал этот бит, но функция удаления удаляет весь список, а не выбранный узел. –

+0

Дайте мне положительный отзыв! мне нужно его, чтобы получить разблокированный ха-ха –