나는 (가능한 한 표준에 가까운) 단일 링크 목록 구현을 직접 작성하려고합니다. 그러나 나는 사람들이 그런 목록에 대해 어느 정도의 시간이 필요한지 궁금해하고있다.단일 링크 된 목록 및 시간 복잡성
특히 삽입하기 위해 어떻게 구현해야하는지 궁금합니다. 나는 몇몇 사람들이 O (1)이라고 말하고 다른 사람들은 O (n)라고 말하면서 인터넷에서 몇몇 위치를 읽었습니다 - 이중 링크 된리스트는 O (1)이라는 것에 모두 동의합니다. 그러나 나는 O (1)도 단일 연결 목록의 경우라고 생각하십니까?
앞의 노드를 아는 한 이전 노드가 새로운 새 노드를 가리 키도록하고 새 노드는 이전 노드가 원래 가리킨 노드를 가리 키도록합니다.
그렇다면 사람들이 insert
이 어떻게 행동 할 것으로 예상하는지 궁금하게 생각하십니까? 통상은, 지정된 반복자의 전에 요소를 삽입합니다. 그러나 단 하나 연결 한 명부로 그것을하기 단단하다 (사람은 O(n)
선행하는 성분을 얻는 시간을 통과해야하고 &는 그 후에 위 방법을 사용한다). 그러한 목록에서 현재 반복자 뒤에 insert
항목을 배치하는 것이 일반적입니까? 아니면 더 나은 - 거기에 또 다른 공통 기능이 있습니까?
마지막과 처음에 삽입하는 것은 일반적으로'O (1)'입니다; 가운데는'O (n)'입니다. 아마 당신의 반복자는 링크 된리스트의 앞의 요소를 추적 할 수 있습니다. – irrelephant
가능한 중복 [stl 목록 - 복잡성] (http://stackoverflow.com/questions/3191790/stl-list-complexity) – erisco
@erisco 나는 특히'std :: list'가 될 수없는 장소를 요구하고 있습니다. 'std :: forward_list'와 동일 – paul23