2016-11-28 2 views
-3

노드 삭제 기능을 구현하라는 메시지가 나타납니다. 노드 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() 

노드가 나는 그것을 더 요소

어떤 아이디어를 보여줍니다 실행 한 후, 전체 목록이 표시라고 삭제하기 전에

?

listofnodes.deleteNode(l,Node(8))

에서

+1

'listofnodes.deleteNode (Node (8))'시도 (여기에 너무 많은 인수가 있음) –

+0

그 비트를 정렬했지만 함수는 선택된 노드가 아닌 모든 노드를 삭제합니다. –

답변

1

당신은 세 번째 (선언의 self)와,이 인수를 전달하는이

당신은

def deleteNode (self,n):

같은 방법을 선언 암시 적으로 전달

그래서 하나의 매개 변수 (n) 만 허용

+0

고마워요. 몇몇 이유. –

+0

이제이 비트가 정렬되었지만 삭제 기능은 선택된 노드가 아닌 전체 목록을 삭제하고 있습니까? –

+0

나에게 긍정적 인 평가를 해주세요! 내가 차단 해제 하하 필요해. –