지금까지 만든 이중 연결 리스트가 올바르게 동작하는지 확인하기 위한 출력 함수를 구현하였다.
첫번째 노드부터 순환하며, 리스트 내의 모든 노드의 데이터를 출력한다.
이중 연결 리스트의 선언부이다.(DoubleLinkedList.h)
노드의 생성과 관련된 함수(ifCreateDLL), 소멸과 관련된 함수(ifDestroyDLL, ifDestroyAllDLL), 리스트로의 연결과 관련된 함수(vfAppendDLL, vfInsertAfterDLL), 탐색과 관련된 함수(pstfSearchLocationDLL), 리스트에서의 연결 해제와 관련된 함수(ifRemoveDLL) 로 이루어져 있다. 필요에 따라 함수를 수정, 추가, 구현하여 사용할 수 있다. 노드의 자료형을 추가한 후, 노드 생성함수를 수정하여 사용하거나, 리스트의 노드 중, 특정 노드 앞에 노드를 추가하는 함수를 추가, 구현할 수 있다.
이중 연결 리스트의 구현부 이다.(DoubleLinkedList.c)
마지막으로 그 동안 구현한 이중 연결 리스트의 함수들을 사용하는 예제이다.
vfPrintAllDLL 함수가 호출되는 시점을 기준으로 다음과 같이 4 단계로 나눌 수 있다.
1 단계 : "1, 2, 3, 4, 5, 6, 7, 8" 의 자료를 가지는 노드를 각각 만들어 리스트에 연결
2 단계 : 리스트의 4 번째 노드를 찾아서, 리스트에서의 연결을 제거하고 소멸
3 단계 : 리스트의 5 번째 노드를 찾아서, 리스트에서의 연결을 제거한 후, 리스트의 처음 노드의 뒤에 연결
4 단계 : 리스트 전체 소멸
위와 같은 결과가 출력된다. 조금 자세히 보면, 아래와 같이 4 번째 노드가 삭제되고, 5 번째 노드가 리스트의 처음 노드 뒤로 이동한 것을 확인할 수 있다.
'Programming > Data Structure' 카테고리의 다른 글
[C] 원형 연결 리스트 (Circular Linked List) 2. 추가 / 탐색 / 삽입 / 삭제 (0) | 2013.05.14 |
---|---|
[C] 원형 연결 리스트 (Circular Linked List) 1. 정의 / 생성 / 소멸 (0) | 2013.05.14 |
[C] 이중 연결 리스트 (Double Linked List) 2. 추가 / 탐색 / 삽입 / 삭제 (0) | 2013.05.13 |
[C] 이중 연결 리스트 (Double Linked List) 1. 정의 / 생성 / 소멸 (0) | 2013.05.13 |
[C] 단순 연결 리스트 (Single Linked List) 3. 코드 정리 / 예제 (0) | 2013.05.11 |