나무 숲
연결 리스트 (Linked List) - 원형 연결 리스트 본문
원형 연결 리스트 Circular Linked List
원형 연결 리스트입니다.
그림처럼 하나로 쭉 이어지며, tail이 별도로, 반드시 필요하지는 않습니다.
head와 tail을 구분지어서 tail과 tail->next(head)로 사용하는 경우도 있습니다.
저는 구분짓지 않고 head만을 사용하였습니다. (따라서 마치 tail과도 같은 역할을 수행하게 되었습니다..)
리스트가 텅 빈 상태에서 뉴노드를 넣게 되면 보여지는 모습입니다
노드가 하나 이상일 때 노드를 추가하면 나타나는 모습입니다.
이러한 구조 때문에 head부터 리스트의 데이터들을 출력하면 생각하던 결과와 다소 다른 값이 출력됩니다.
출력값은 아래 스크린샷에 있습니다. (1에서 5.. 순서대로 출력하려면 head->next부터 출력해야 합니다)
head노드를 삭제하는 모습입니다. 일반 연결 리스트와 마찬가지로 더미노드를 이용하였습니다.
head의 전에 있던 노드와 head->next 노드를 연결해야 하기 때문에 before노드가 추가적으로 필요합니다.
저는 연결 리스트의 데이터 갯수를 구하여 before 노드를 head 앞까지 이동시키는 방법을 사용하였습니다.
head를 before위치로 옮긴 후 Dummy노드를 삭제하는, 메모리가 해제되는 모습입니다
출력방법 1은 head부터 출력, 방법2는 head->next부터 출력한 모습입니다
(원형의 확인을 위해 리스트를 3번 출력했습니다.)
-----------------------------------------------------------------------------------------------------------------------------------------
개인적으로 작성해본 내용이라 틀린 부분이 있으면 지적해주세요..
'Career > 알고리즘 · 자료구조' 카테고리의 다른 글
스택 (Stack) (0) | 2016.08.18 |
---|---|
연결 리스트 (Linked List) - 이중 연결 리스트, 이중 원형 연결 리스트 (2) | 2016.08.16 |
연결 리스트 (Linked List) - 메모리의 동적 할당 (0) | 2016.08.11 |
연결 리스트 (Linked List) - 배열 (0) | 2016.07.15 |
하노이 타워 (The Tower of Hanoi) (0) | 2016.07.09 |