과제- 더블리 링크드 리스트 삭제

김오왼·2022년 2월 10일
0

자료구조

목록 보기
18/29

def delete (self,node_to_delete):
    
    data = node_to_delete.data 
    
    # 1.지우려는 노드가 마지막 노드일 경우 , 헤드노드와 꼬리노드 = node_to_delete가 됨 
    if node_to_delete is self.head and node_to_delete is self.tail:
      self.head = None #헤드 와 꼬리를 None으로 가르켜 데이터를 끊어줌 
      self.tail = None
      
    # 2.헤드 노드를 지우려는 경우
    elif node_to_delete is self.head:
      self.head = self.head.next #헤드의 다음 노드가 헤드를 지정하고 
      self.head.prev = None  # 새로운 헤드의 전 노드를 None으로 지정해줌으로써 데이터를 끊어줌 
      
    # 3.꼬리 노드를 지우려는 경우 
    elif node_to_delete is self.tail: 
      self.tail = self.tail.prev #꼬리 노드의 전 노드를 마지막 노드로 지정해주고 
      self.tail.next = None # 새로운 꼬리노드의 다음 노드를 None으로 지정해 데이터를 끊어줌 
    
    else: 
      node_to_delete.prev.next = node_to_delete.next 
      # [prev - node_del - next] -> [ prev -> next ]
      # node_to_delete의 전 노드의 다음노드 = node_to_delete 의 다음 노드 
      node_to_delete.next.prev = node_to_delete.prev
      # [prev - node_del - next] -> [ prev <- next ]
      #node_to_delete의 다음 노드의 전 노드 = node_to_deleted 의 전 노드
      
    # 삭제하는 노드 데이터 리턴  
    return data 

profile
전문 금융인을 목표로하는 김야옹야옹이

0개의 댓글