더북(TheBook)

cur이 head와 겹쳐 있습니다. 이런 경우에는 head를 다음 노드로 옮겨야 합니다.

257_2

그림 12-9 삭제 노드가 첫 번째이고 데이터 개수가 두 개 이상일 때 ②


그림 12-9를 보면 아직은 bef와 cur이 가리키고 있어 삭제 노드의 레퍼런스 카운트는 2입니다. 이후 함수 호출이 끝나 스택 프레임이 해제되면 bef와 cur은 사라지고 삭제 노드의 레퍼런스 카운트는 0이 되어 지워집니다.

다음으로 삭제 노드가 첫 번째 노드가 아닌 경우를 봅시다(#B).

#B. 삭제 노드가 첫 번째 노드가 아닐 때

if target = = cur.data:

     #B-1. 삭제 노드가 마지막 노드일 때

     if cur = = self.tail:

        self.tail = bef

     #B-2. 일반적인 경우

     bef.next = cur.next

     self.d_size -= 1

     return cur.data

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.