더북(TheBook)

새로운 원소를 삽입하려면 일단 새로운 노드를 생성하고, 각 노드의 next 포인터를 수정해야 합니다. 먼저 새로 추가한 노드(i = 2)의 next 포인터가 다음 노드(i = 3)를 가리키게 만듭니다. 그리고 이전 노드(i = 1)의 next 포인터가 다음 노드(i = 3)를 가리키던 것을 제거하고, 새로운 노드(i = 2)를 가리키도록 설정합니다. 이러한 방식으로 새로운 노드가 연결 리스트에 추가됩니다.

마찬가지로 기존 원소를 제거하려면 삭제할 원소가 더 이상 연결 리스트에 연결되어 있지 않도록 next 포인터를 수정하면 됩니다. 그런 다음 해당 노드의 메모리 할당을 해제하거나 또는 다른 적절한 처리를 수행할 수 있습니다.

연결 리스트에서는 원소가 메모리에 연속적으로 저장되지 않기 때문에 캐시 지역성을 기대할 수 없습니다. 즉, 현재 노드가 가리키는 다음 노드에 직접 방문하지 않고 다음 원소를 캐시로 가져올 수 있는 방법은 없습니다. 따라서 배열과 연결 리스트에서 모든 원소를 차례대로 방문하는 작업은 이론적으로 같은 시간 복잡도를 가지지만, 실제로는 연결 리스트의 성능이 조금 떨어집니다.

다음 절에서는 연속된 자료 구조와 연결된 자료 구조를 비교하여 요약해보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.