내 코드에 문제가 있습니다. 노드를 삭제 한 후 동일한 노드가 다음 노드의 이전 노드로 나타납니다. 노드 4를 제거하려고합니다.순환 연결 목록에서 값 삭제
이전 : 노드 : 5; 노드 : 15; NextNode : 16 | 이전 : 노드 : 15; 노드 : 16; NextNode : 29 | 이전 : 노드 : 16; 노드 : 29; NextNode : 4 | 이전 : 노드 : 29; 노드 : 4; NextNode : 5 | 이전 : 노드 : 4; 노드 : 5; NextNode : 15 |
제거 후
이전 : 노드 : 5; 노드 : 15; NextNode : 16 | 이전 : 노드 : 15; 노드 : 16; NextNode : 29 | 이전 : 노드 : 16; 노드 : 29; NextNode : 5 | 이전 : 노드 : 4; 노드 : 5; NextNode : 15
public Node deleteValue(int i) {
Node node = start;
do {
if (node.next.getData() == i) {
Node n = node.next;
node.next = n.next;
size--;
if (n == start) {
start = node;
}
return n;
}][1]
node = node.next;
} while(node != start);
return null;
}
Node 클래스에 이전 노드를 가리키는 필드/변수가 있습니까? 아니면 다음 요소를 가리키는 다음 필드 만 있습니까? –
예 노드가 있습니다. prev; – gate
글쎄, 당신은 아마도 당신의 remove 메쏘드에서 그것을 수정할 것입니다. 현재 다음 속성 만 변경 중입니다. 따라서 prev 속성이 동일하게 유지되고 여전히 제거 된 요소를 가리키는 것은 놀랄 일이 아닙니다. –