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

+ Recent posts