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 변경 예외를 확인한다. | 앞·뒤 순회 결과가 같은 노드 집합인지 본다. |