본문 바로가기

Programming 기본기/자료구조(C++)

1. 리스트(List)

선형구조를 갖고 있는 리스트(List)

- 데이터를 순차적으로 저장하기 때문에 선형 구조

- A-B-C-.......-Z 의 형식으로 순차적으로 저장되어 끊어지지 않고 한 줄로 계속되기 때문에

  선같은 형태를 띈다 해서 선형구조라고 함


1. 링크드 리스트(Linked List) : 노드의 연결로 이루어져 있다.

노드를 연결해서 만들어지는 리스트이며 이 노드는 데이터와 포인터를 가짐



- 연결 리스트의 형태는 

 ㆍ 단순 연결 리스트

 ㆍ 원형 연결 리스트

 ㆍ 이중 연결 리스트

로 세가지가 존재 한다.


단순 연결 리스트는 노드를 얻기 위해 드는 비용이 크고 속도도 느리다는 단점이 있다.

이유는 헤드부터 시작해서 테일까지 차례차례 노드를 탐색하기 때문이다.

하지만 장점으로는 새로운 노드를 추가하려면 삭제, 삽입이 간편하다.


2. 더블 링크드 리스트(Doubly Linked List) : 양방향으로 탐색하자

 - 단순 연결 리스트가 단방향의 노드의 연결이라면 더블 링크드 리스트는 양방향으로 연결된

노드들의 집합? 이라고 볼수 있다.

이중 연결 리스트는 헤드에서 테일, 테일에서 헤드 방향으로 탐색이 양방향으로 가능한 탐색이다.

단순 연결 리스트는 다음 노드를 가르키는 포인터만 갖고 있는 반면 이중 연결 리스트는 다음 노드

와 이전 노드의 주소까지 가지고 있다.


이중 연결 리스트는 노드의 추가로 인해서 단순 연결 리스트에 비해서 삽입, 삭제의 과정이 복잡하다.



단순 연결 리스트의 삭제 시에는 두개의 포인터를 다루는 반면 이중 연결리스트의 삭제 함수는

네개의 포인터를 다루기 떄문에 조금 과정이 복잡해 졌다.


3. 환영 링크드 리스트(Circular Linked List) 머리가 꼬리를 문다.

 - 기존 링크드 리스트는 Node가 연결되어 있는 선형이라고 하면 환영 링크드 리스트의 경우는

   링크드 리스트의 마지막 즉 꼬리 노드의 다음 노드는 머리(Head)의 위치를 가르킨다.



 위 그림을 보면 단순 연결 리스트의 꼬리 다음이 노드의 첫 머리 부분의 주소를 가르키는 형태가 됨으로 써 원형의 구조를 갖는다.


'Programming 기본기 > 자료구조(C++)' 카테고리의 다른 글

6. 리스트(List) & 스택(Stack) & 큐(Queue) & 힙(Heap) & 트리(Tree) 종합 정리  (0) 2016.09.10
5. 힙(Heap)  (0) 2016.09.10
4. 트리(Tree)  (0) 2016.09.10
3. 큐(Queue)  (0) 2016.09.10
2. 스택(Stack)  (0) 2016.09.10