단방향 연결 리스트와 순환 연결 리스트는 보통 헤드 포인터를 사용한다.

헤드 포인터는 연결리스트의 맨 처음 노드인 시작 노드를 가리킨다.


이중 연결 리스트는 양방향으로 연결되어 있는 리스트이므로 2가지 포인터를 사용한다.

다음 노드는 물론 이전 노드까지 접근 가능한 리스트이다.

이중 연결 리스트는 헤더 노드를 사용하는데 노드 자체를 사용하여 추가와 삭제를 용이하게 한다.

헤더 노드는 리스트의 첫번째 노드와 마지막 노드를 가리키는 포인터 값을 가진다.


왜 이중 연결 리스트는 헤더 노드를 사용해야 할까?

이중 연결 리스트는 pNode==pNode->pLLink->pRLink==pNode->pRLink->pLLink를 만족해야 한다.

만약 헤드 포인터를 사용하게 되면 pNode가 첫번째 노드일 경우에 pNode->pLLink는 노드가 아닌 단순한 헤드 포인터이므로(노드만 가리키는 포인터이므로) pNode->pLLink->pRLink가 성립될 수 없다. 노드의 추가와 삭제시에 고려해야 할 점이 늘어나므로 헤드 포인터가 아닌 헤더 노드로 구현하는 것





http://web.skhu.ac.kr/~mckim1/Lecture/DS/dna/class04/class04_05.html

'자료구조' 카테고리의 다른 글

정렬 알고리즘에 대한 용어?  (0) 2016.06.11
[C++자료구조론] 1. 성능분석과 측정  (0) 2016.03.03

+ Recent posts