선형 구조 - 배열, 연속 리스트, 연결 리스트
배열(Array)
- 인덱스를 통해 Value에 접근함.
-
배열 가운데의 원소가 삭제되면 null 값이 들어감. (밀도≠1)
- 인덱스를 통한 검색시 : O(1)
연속 리스트(ArrayList) = 선형 리스트, 순서 리스트
- 배열과 같이 인덱스를 통해 Value에 접근함.
- 배열 가운데 원소가 삭제되면 null값이 들어가지 않고 뒤의 원소가 앞으로 땡겨져 채워넣음 (밀도=1)
-> 삽입, 삭제시 원소의 이동이 일어나기 때문에 번거롭다. -
연속적으로 놓여있어 검색은 용이하지만 삽입, 삭제시 용이하지 않음.
- 인덱스를 통한 검색시 : O(1)
- 삽입, 삭제시 : O(n)
연결 리스트(LinkedList)
- 노드 + 포인터
- 자료들을 연속적으로 배열시키지 않고 임의의 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 자료를 연결시킴.
- 포인터 부분이 필요하기 때문에 기억공간 효율이 좋지 못함.
- 원소의 이동이 필요 없기 때문에 삽입, 삭제시 용이하나 검색시 포인터를 통하기 때문에 접근속도가 느림
-
헤드포인터가 첫번째 노드의 주소를 갖고 있고, 마지막 노드는 포인터에 NULL을 저장 (원형 연결 리스트의 경우 마지막 노드에 첫번째 노드의 주소를 갖음.)
- 검색시 : O(n)
- 삽입, 삭제시 : O(1)
(1) 단순 연결 리스트 : 1개의 포인터만 갖고 있으로 다음 노드를 가르킴
(2) 이중 연결 리스트 : 2개의 포인터를 갖고 있어 앞&뒤 노드를 가르킴
(3) 원형 연결 리스트 : 마지막 노드의 포인터가 첫번째 노드를 가르킴