작성
·
322
0
안녕하세요.
연결리스트에서 가능한 노드의 연결상태는
1. 노드한개 Head =Tail
Head=Tail 이 가르키는 노드의 prev 와 next 는 null
2. 노드두개 (Head 한개 Tail 한개)
Head가 가리키는 노드의 prev는 null , next는 prev가 가리키는 노드 ,
Prev가 가리키는 노드의 prev는 Head가 가리키는 노드 , next는 null
3.노드세개이상
으로 일반화해 분류 할 수 있습니다.
이때 구현하신 Remove 함수를 보면
If(Head==node)
Head=Head.next
If(Tail==node)
Tail=Tail.prev
에서는 노드의 연결상태ㅡ두번째 경우에서 첫번째 경우로 갈때 삭제가 이루어지고나서 결과적으로 남는 Head 와 Tail이 동시에 가리키는 Node의 prev 또는 next가 null이 아닌 경우가 발생합니다. 따라서
If(Head==node)
[Head=Head.next
Tail.prev=null;]
If(Tail==node)
[Tail=Tail.prev
If(Head.next!=null)
{Head.next=null}
]
으로 해주어야 제대로 되지 않나 싶은데요 ,
(연결리스트의 특성상 여기서는 문제 없을지라도 기능을 확장시 에러발생이 가능할 수 도 있으니) 답변부탁드립니다 감사합니다
답변 2
0
아하! Head not equal Node && Tail not equal Node 의 경우에만
언급하신 코드가 실현된다고 생각했더니 오해가 생겼군요 .
감사합니다.
0
에서는 노드의 연결상태ㅡ두번째 경우에서 첫번째 경우로 갈때 삭제가 이루어지고나서 결과적으로 남는 Head 와 Tail이 동시에 가리키는 Node의 prev 또는 next가 null이 아닌 경우가 발생합니다]
-> 그렇지 않습니다. 말씀하시는 null 처리는 아래 부분에서 챙겨지게 됩니다.