10 개의 노드와 6 번째 노드로 연결된 목록이 두 번째 노드를 가리키는 경우. 루프가 내부에 있는지 확인할 수있는 방법다른 노드를 참조하는 연결된 목록에서 노드를 찾는 방법
-1
A
답변
0
노드가 10 개이면 링크 된 목록에서 마지막 노드가 null이어야하기 때문에 이런 상황은 발생할 수 없습니다. 위에서 말했듯이이 상황에서는 5 번째 노드가 null이어야하고 5 개의 요소 만 있습니다. 당신이 원형 연결리스트를 사용하는 경우에 당신은 가장 유명한이 "토끼와 거북이"알고리즘 (일명 플로이드의 사이클 탐지)는 몇 가지 흥미로운 cycle detection 알고리즘이있다
'(last->data== (first++)->data)'
0
확인할 수 있습니다. 토끼가 거북이를 두 배나 빨리 걷는다면주기가 있으면 다시 만나게 될 것이라는 생각에 기반합니다.
브렌트의 알고리즘은 좀 더 복잡하지만 "다음" 함수의 평가는 더 적습니다 (여기에는 포인터가 더 적습니다).
더 적은 수의 평가를 사용할 수있는 방법이 있습니다. 내가 아는 한 모든 것은 더 많은 스토리지를 사용하는 것을 기본으로합니다. 가장 확실한 방법은 "지금까지 본 노드"의 해시 테이블을 유지하고 이미 노드가있는 노드를 추가 할 때주기를 감지하여 두 번째로 볼 노드를 즉시 감지하는 것입니다 그러나 O (n) 공간을 취한다. Gosper's loop detection 알고리즘은 O (log n) 공간 만 사용하며 훨씬 더 흥미 롭습니다 (아마도 약간 이해하기 힘들 것입니다). multiple stacks을 사용하여 튜너 블 (공간 대 평가) 알고리즘을 사용합니다 (기사에는 더 많은 알고리즘에 대한 링크가 포함되어 있습니다).
관련 문제
- 1. 문자열을 기반으로 연결된 목록에서 노드를 삭제하는 방법
- 2. 연결된 목록에서 여러 노드를 검색하고 삽입하는 방법
- 3. 재귀를 사용하여 연결된 목록에서 노드를 제거하는 방법?
- 4. 연결된 목록에서 노드를 삭제하는 방법은 무엇입니까?
- 5. 이중 연결된 목록에서 노드를 제거하는 방법은 무엇입니까?
- 6. XML 노드를 연결/참조하는 방법
- 7. 연결된 그래프에서 최대 분리 점을 갖는 노드를 찾는 효율적인 방법
- 8. 하나의 노드를 복사하고 다른 노드를 변경하는 방법
- 9. jquery로 텍스트 노드를 찾는 방법
- 10. Neo4j에서 특정 노드를 찾는 방법
- 11. 연결된 노드의 노드를 반환
- 12. 연결된 목록에 여러 노드를 만들고 노드를 반복하는 방법
- 13. 두 개의 교차 연결된 연결 목록의 공통 노드를 찾는 방법
- 14. 여러 위치에서 XML 노드를 참조하는 방법
- 15. XML 루트 노드를 총체적으로 참조하는 방법
- 16. 연결된 노드를 강조 표시하는 d3js
- 17. 순환 링크 된 목록에서 노드를 삭제하는 방법
- 18. 마지막 노드를 삭제하거나 Java의 연결된 목록에서 노드 만 삭제합니다.
- 19. 연결된 목록에서 첫 번째 노드를 삭제하는 방법은 무엇입니까?
- 20. 다른 노드를 참조하는 XPath에서 중첩 조건을 만드는 방법
- 21. C에서 연결된 목록 노드를 바꾸는 방법
- 22. mongodb : replicaSet에 연결된 노드를 확인하는 방법
- 23. 그래프에 연결된 모든 노드를 계산합니다.
- 24. 연결된 목록에서 노드를 처음부터 끝까지 이동하는 방법은 무엇입니까? C
- 25. 연결된 목록에서 모든 노드를 제거하는 데 문제가 있습니다.
- 26. 이 코드는 연결된 목록에서 노드를 삭제할 수 있습니까?
- 27. 두 개의 동일한 텍스트 노드를 찾는 방법
- 28. 목록에서 트리 뷰에 노드를 추가하는 방법
- 29. 이진 검색 트리에서 노드를 찾는 방법
- 30. 다른 노드를 저장할 때 노드를 수정 하시겠습니까?
여섯 번째 노드 다음에 순환하면 노드를 어떻게 가질 수 있습니까? – harold
링크 된 목록이 6 개의 노드 만 가질 수 있다고 판단되면 [링크 된 목록의 루프를 찾는 방법?] (0120-13995) – Dukeling
읽기 : [찾기 단일 링크 된 목록에서 루프] (http://stackoverflow.com/questions/10275587/finding-loop-in-a-singly-linked-list) –