연결리스트(Linked List)란?

동적으로 크기가 변할 수 있고 삭제나 삽입시에 데이터를 이동할 필요가 없는 자료구조가 연결리스트입니다.

- 데이터와 링크로 구성되어있고 링크가 데이터들을 연결하는 역할을 합니다.


- 요런 형태입니다.


연결리스트는 노드로 구성되어있는데,

- 노드 : 데이터 필드, 링크 필드로 구성

- 데이터 필드 : 실제 저장할 데이터가 있는 공간

- 링크 필드 : 다른 노드를 가리키는 포인터를 저장



배열의 경우 중간에 데이터를 삽입하려면 삽입하려는 위치에 있는 데이터와 그 이후에 있는 데이터들을 모두 한 칸씩 뒤로 움직여야하는데, 연결리스트는 그럴 필요가 없습니다.

- 삽입하려는 위치의 링크만 변경해 주면 됩니다.



단순 연결 리스트

- 위의 연결 리스트가 단순 연결 리스트

- 데이터 필드와 링크 필드를 갖는 노드들의 집합

- 마지막 링크 필드는 NULL


원형 연결 리스트

- 연결리스트의 가장 끝 노드가 첫번째 노드를 가리키는 리스트

- 큐에 사용되면 rear, front가 무제한으로 늘어나는 현상을 완화시킬 수 있음



이중 연결 리스트

- 단순 연결 리스트에서 뒤에 있는 노드는 찾기 쉽지만 앞에 있는 노드를 찾기 어려운 점을 해결한 리스트

- 링크 필드가 2개로, 선행 노드와 연결된 링크필드, 후행 노드와 연결된 링크필드의 두 가지로 구성되어있다.


- 링크가 양방향이기 때문에 양방향으로 검색이 가능하다. -> 코드가 더 복잡해짐

- 원형 연결 리스트처럼 마지막 링크 필드를 첫 번째 노드로 연결시키는 경우도 있음 (꼭 다 그렇지는 않음)




연결리스트의 장점

- 삽입, 삭제가 빠르다.

- 메모리 공간을 동적으로 설정할 수 있다.

- 크기의 제한이 없다.


연결리스트의 단점

- 배열에 비해 구현 방법이 복잡하다.

- 배열에 비해 구조가 복잡해 오류가 날 가능성이 높다.

- 링크 필드를 위한 추가 공간이 필요하다.


'Basics > Data Structure' 카테고리의 다른 글

배열과 연결리스트  (0) 2014.11.11
배열 (Array)  (0) 2014.11.11
정렬 알고리즘의 비교  (0) 2014.11.01
정렬 - 기수정렬  (0) 2014.11.01
정렬 - 힙 정렬  (0) 2014.11.01
Posted by 긍정왕오킹