pointer snapshot

삭제 전에는 이웃 포인터를 먼저 보존한다

대상 노드 X를 지우기 전 A와 B를 기억해 두면 링크를 잃지 않고 안전하게 건너뛸 수 있다.

보존 삭제 대상

바꾸기 전

Anext → X
X 삭제prev A · next B
Bnext ...

바꾼 뒤

Anext → B
Bprev → A
X는 체인 밖
Xdetached
단계 단일 연결 이중 연결
보존 prev를 먼저 찾는다. oldPrev, oldNext를 변수에 저장한다.
재배선 prev.next = target.next oldPrev.next = oldNext, oldNext.prev = oldPrev
검증 head 변경 예외를 확인한다. 앞·뒤 순회 결과가 같은 노드 집합인지 본다.