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