본문 바로가기

Coding Note

[Data Structure] Circular double linked list

이전 글에서 링크드 리스트에 대해 설명했었는데,,
그 중 환형리스트에 대해 조금 더 살펴보려 한다.
(딱히 중요해서 그런건 아니다.)
링크드 리스트는 배열과 달리 동적인 데이터 관리를 가능하게 해준다는 커다란 장점이 있다.

하.지.만!  리스트는 거의 대부분의 작업이 (뭔가를 찾는다거나 노드를 추가한다던가 하는 등등..)
루프를 뱅글뱅글 도는일이다.

효율성을 생각한다면 낙제생인 샘이다.
특히나 가장 앞대가리 노드에서 맨 끝의 노드를 탐색할 일이 있다면, 배열에 비해 얼마나 비효율적인지 금방 느낄 수 있다.

그런데 앞 머리와 뒤 꼬리를 이어줘서, 둥글둥글한 환형 링크드리스트라면 어떨까?
이렇게 하면 노드들의 탐색간에 시간적인 비용을 상당히 줄일 수 있다.
(다만 효율적으로 탐색하도록 하는 코드는 직접 짜줘야겠지만..) 

..

환형 이중 링크드 리스트는 이중 링크드 리스트랑 닮은데가 많고, 머리와 꼬리가 이어졌다는 사실만 다를뿐이므로,
아래 코드를 찬찬히 보면 적당히 환형 리스트가 어떤식으로 만들어지는지 알 수 있을것이다.
(아래 코드는 뇌를자극하는 알고리즘의 코드이다.  클래스화 하면 좋겠지만 크게 차이는 없으니..)

그리고 이걸 활용하는 main함수


조금 어려워 하는부분이 (그리고 핵심적인 부분이) CDLL_AppendNode 함수이니 이 부분만 따로 설명하면,,



ㅇㅅㅇ..  그림으로 설명 대체

..
.
 

'Coding Note' 카테고리의 다른 글

[Data Structure] Queue  (0) 2011.08.12
[Data Structure] Stack  (2) 2011.08.04
[Data Structure] Linked List  (0) 2011.08.03
[C++] 포인터 이해를 위한 Linked List  (0) 2011.05.09
[winAPI] 콘솔창 띄우기  (0) 2011.03.09