예를들어 우리가 1,2,3,4라는 4개의 데이터를 보관해야 한다고 생각했을때
배열의 경우 3에 접근을 하기 위해서는 *(arr+2), arr[2] 등과 같이 한번에 접근이 가능하다.
하지만 링크드 리스트는 c가 있는 곳까지 가려면 a,b를 거쳐야 한다.
먼
저 배열은 각 원소들이 차례대로 줄지어서 위치하기 때문에 이렇게 단순한 덧셈을 통해 원소에 접근이 가능하다.
구체적으로 말하면 일단 첫번째노드(a)에 접근해서 두번째 노드(b)의 위치를 알아내고, 다시 두번째 노드(b)에 접근한뒤
여기까지만 보았을때는 배열이 훨신 좋다.
어떤 원소에 접근하려고 할때 배열은 덧셈 한번만 하면 끝나지만, 링크드리스트는 첫번째 노드부터 원하는 노드에 이르기까지
※원소와 노드
배열이 원소 5개를 보관할 수 있을만큼 크게 정의됐다는 가정하에서 끝에 e를 추가할수있다.
배열의 끝에 e를 포함하는 원소를 추가하려면 처음 배열을 만들 때부터 충분한 크기의 공간을 만들어야 한다.
하지만 링크드리스트 경우에는 e를 포함하는 새로운 노드를 만들고, 마지막 노드와 새로운 노드를 연결시켜주면 끝난다.
이번에는 배열이나 링크드 리스트 중간에 새로운 정보를 삽입하는 시나리오를 보자.
우선 배열의 경우 e라는 값을 a와 b사이에 삽입하려면 b~d까지의 원소를 뒤로 한칸씩 밀어내야 한다.
반면 링크드리스트는 a와 b의 연결을 끊은 후에 a와 e, e와 b를 연결시키면 간단하게 끝난다.
'C++' 카테고리의 다른 글
라이브러리(Library) 란? (0) | 2014.08.22 |
---|---|
boost 라이브러리 빌드 설치 [비쥬얼 스튜디오(VS)] (0) | 2014.06.03 |
포인터배열, 배열포인터 두가지 차이를 정리해보자. (0) | 2014.01.25 |
학원 공부중!.. 모르는것 정리中 (0) | 2014.01.15 |
[DirectX SDK 설치]Visual Studio 2010 디렉터리 관련 설정.. (0) | 2013.11.25 |