필자는 머리글을 추가 할 때마다 머리글 참조를 수정하거나 머리글 참조를 수정하지 않고 꼬리말에 추가 할 때마다 링크드 목록을 추가하는 많은 구현을 보아 왔습니다. 한 대와 다른 대가의 확실한 이점이 있습니까? 어느 것이 바람직한 구현 방법입니까?연결된 목록 구현, 머리에 추가 또는 꼬리에 추가?
1
A
답변
1
전혀 이점이 없습니다. 사실 머리를 머리와 꼬리로 만드는 유일한 것은 우리가 머리와 꼬리를 부르는 것입니다. 머리를 꼬리로, 머리를 꼬리로 바꿀 수 있으며, "거꾸로"를 제외하고 똑같은 정확한 목록을 가질 수 있습니다. 연결리스트의
0
절대 간단한 구현은 (효율적) 머리에 추가 할 수 있습니다 .. 그것은 좀 물질과 반물질처럼
(이 ... 이중 연결리스트를 가정 않습니다). 꼬리에 추가하려면 현재 마지막 요소를 가리키는 두 번째 포인터가 필요합니다.
사용자는 특정 시간에 목록 길이를 쿼리 할 수있을뿐만 아니라 양쪽 끝에 추가 할 수 있고 꼬리 머리에서 목록을 탐색 할 수 있기를 원합니다 (이중 연결 목록이 필요함). 알맞은 기본 구현은이를 지원해야합니다 (java.util의 경우와 동일).
제한된 기능을 정당화하고 복구 요구 사항을 줄이기 위해 꼬리 공유와 같은 실질적인 혜택을 얻을 수있는 경우 단 링크 목록 만 사용해야합니다. ConcurrentLinkedQueue은 잠금없이 동시 실행이 가능하도록 단일 링크로 표시됩니다. 현재 길이를 알 수 없다는 절충안은 Javadocs에 언급되어 있습니다.
0
java.util.LinkedList는 두 기능을 모두 구현합니다. 그것은 그것을 보편적으로 만든다 - 그것을 큐 (FIFO)와 스택 (LIFO)으로 사용할 수있다.
관련 문제
- 1. 연결된 테이블에 두 개의 드롭 목록 추가
- 2. 목록 : append/2 대 erlang : '++'/ 2, 목록의 끝에 추가, 머리에 추가
- 3. 연결된 목록에 추가
- 4. 목록 내부에 목록 추가
- 5. 목록 : 목록 이해력 추가
- 6. MySQL : 레코드 추가 : 찾기, 추가 또는 추가
- 7. 반복자 인터페이스를 사용하여 연결된 목록 구현
- 8. Pop 함수 및 연결된 목록 구현
- 9. 추가 목록 요소
- 10. 링크 된 목록 앞에 추가
- 11. 연결된 정렬 가능 목록
- 12. 내 레이아웃에 목록 추가
- 13. 2D arraylist에 목록 추가
- 14. 연관에 목록 유형 추가
- 15. 방화벽에 추가 예외 목록
- 16. Prolog : 설정할 목록 추가
- 17. 다른 연결된 목록 및 무료 포함 된 연결된 목록
- 18. 초보자 - C에서 행렬 추가 구현
- 19. jquery 메서드 및 구현 추가
- 20. 연결된 목록 push()
- 21. 연결된 목록 디자인
- 22. 연결된 목록 재귀 메서드
- 23. C++ stl 모음 또는 연결된 목록
- 24. VB.net에서 연결된 문자열 사이에 끊어짐 줄 추가
- 25. Android SyncObserver에서 구현 된 사람 (또는 추가 정보가 있음)
- 26. Sharepoint : 다른 사이트의 목록 추가
- 27. JSON 개체에 목록 개수 추가
- 28. 파이썬의 목록 인스턴스에 메서드 추가
- 29. 목록 인스턴스 XML에 SPFolder 추가
- 30. Internet Explorer 추가 기능 목록
하나는 새 노드를 머리에 놓고 다른 하나는 꼬리에 놓는다. 장점이 있는지 여부는 새 노드를 원하는 위치에 따라 다릅니다. –