연결 리스트에 대해서 설명
연결 리스트(Linked List)는 노드(요소)들을 포인터로 연결하여 관리하는 선형 자료구조.
각 노드는 데이터와 다음 요소에 대한 포인터를 가지고 있음. 이때 첫번째 노드를 HEAD, 마지막 노드를 TAIL.
메모리가 허용하는 한 요소를 계속 삽입할 수 있음. 시간 복잡도에는 탐색에는 O(N), 노드 삽입과 삭제는 O(1),
배열은 순차적인 데이터가 들어가기 때문에 메모리 영역을 연속적으로 사용함. 반면 연결리스트는 메모리 공간에 흩어져서 존재한다는 점에서 배열과 차이가 있음.
단일 연결 리스트에서 탐색은 최악의 경우에 O(N), 노드를 탐색하기 위해 HEAD의 포인터부터 데이터를 찾을 때까지 다음 요소를 반복적으로 탐색하기 때문.
삽입의 경우, 삽입될 위치 이전에 존재하는 노드와 신규 노드의 포인터를 조작하면 됨.
3번 위치에 신규 노드를 삽입해야하면, ‘2번 → 신규 → 기존3번‘으로 수정하면 됨
삭제의 경우, ‘이전노드 → 다음노드’ 를 가르키도록 하여 수정 가능
삽입과 삭제의 경우 O(1)의 시간복잡도. 하지만 탐색의 경우엔 선형 시간이 걸릴 수 있음
[참고]
Last updated