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

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