728x90
양방향 연결 리스트
- 참조 방향이 양쪽으로 연결되어 있음
- 더미 노드가 없는 연결 리스트
- 더미 노드가 있는 연결 리스트
- 원형 연결 리스트
양방향 연결 리스트의 장점
- LNext(참조) 시 before 포인터가 필요 없어짐
-> 기존에는 이전의 노드를 저장하기 위해 before 포인터 변수를 따로 가지고 있었음
-> 하지만 양방향은 노드 자체적으로 before, next를 가지고 있기 때문에 리스트를 구현할 때 따로 before를 만들 필요가 없음
// 단순 연결
int LNext(List * plist, Data * pdata)
{
if(plist->tail == NULL)
return FALSE;
plist->before = plist->cur; // 삭제를 위해 이전 노드의 주소가 필요
plist->cur = plist->cur->next;
*pdata = plist->cur->data;
return TRUE;
}
// 양방향 연결
int LNext(List * plist, Data * pdata)
{
if(plist->tail == NULL) // 저장된 노드가 없다면
return FALSE;
// plist->before = plist->cur; 필요가 없어짐
plist->cur = plist->cur->next;
*pdata = plist->cur->data;
return TRUE;
}
728x90
'Programming > Data Structure' 카테고리의 다른 글
열혈 자료구조 - 6-1. 스택의 이해와 ADT 정의 (0) | 2020.12.20 |
---|---|
열혈 자료구조 - 5-2. 양방향 연결 리스트(2) (0) | 2020.12.20 |
열혈 자료구조 - 5-1. 원형 연결 리스트(2) (0) | 2020.12.19 |
열혈 자료구조 - 5-1. 원형 연결 리스트(1) (0) | 2020.12.19 |
열혈 자료구조 - 4-3. 연결 리스트의 정렬 삽입의 구현 (0) | 2020.12.06 |