Programming/Data Structure2013. 5. 13. 15:26

  노드를 리스트에 추가하는 함수, 첫번째 노드부터 특정 위치에 있는 노드를 찾는 함수, 특정 노드의 다음 위치에 새로운 노드를 연결하는 함수이다.

 단순 연결 리스트와 비교하여 다른 점은 리스트를 추가할 때에, 이전 노드를 가리키는 포인터를 연결하는 부분과, 특정 노드 다음 위치에 새로운 노드를 연결할 때에, 넣는 위치 앞, 뒤에 있는 노드의 다음, 이전 노드를 가리키는 포인터도 다시 새로 연결해주는 점이다. 단순 연결 리스트의 자세한 설명 및 사용에 관련된 사항은 이전 글 (링크 : [C] 단순 연결 리스트 (Single Linked List) 2. 추가 / 탐색 / 삽입 / 삭제) 에서 확인할 수 있다.

 

 위의 세개의 함수를 사용하는 예제이다.

 먼저, 3개의 노드를 생성한 후에, pstSearchLocationDLL, ifCreateDLL, vfInsertAfterDLL 순서로 수행하여, "1, 2, 4, 3" 의 자료를 가지는 리스트가 만들어진다.

 이전에 설명했던 단순 연결 리스트에 비하여 포인터를 하나 더 생각하고, 구현해야 한다는 점에서 어려움이 있다.

 

 노드를 리스트에서 삭제하는 함수이다.

 단순 연결 리스트와 달리 노드의 삭제를 위해 삭제할 노드를 가리키는 노드, 곧, 삭제할 노드의 앞 노드를 찾을 필요가 없다. 이중 연결 리스트는 삭제할 노드의 앞 노드를 가리키는 포인터 공간이 있기 때문이다. 이로 인해서 이중 연결 리스트의 장점인 리스트의 연결 제거시에 추가적인 연산 시간이 필요없다.

Posted by 개발자테오