Link Integrity

연결 리스트 재배선 기준

삭제와 삽입은 코드 한 줄보다 head, tail, prev, next 불변식을 끝까지 보존하는지로 검증합니다.

Before

수정 전 기준점 고정

대상 노드, 이전 노드, 다음 노드를 먼저 잡고 빈 리스트와 단일 노드를 분리합니다.

Change

링크 재배선 최소화

단일 리스트는 prev.next, 이중 리스트는 prev.next와 next.prev를 함께 갱신합니다.

Verify

경계 노드 재확인

head 삭제, tail 삭제, 단일 노드 삭제를 따로 실행해 끊어진 참조를 찾습니다.

첫 노드 삭제

head = head.next가 먼저입니다. prev가 없다는 사실을 조건으로 분리합니다.

마지막 노드 삭제

tail을 유지한다면 tail 갱신을 빼먹지 않아야 역참조가 깨지지 않습니다.

단일 노드 삭제

head와 tail이 같은 노드를 가리키므로 둘 다 비우는 케이스를 별도 테스트로 고정합니다.