summ의 블로그

연결 리스트 3-2 본문

자료구조

연결 리스트 3-2

summ._ 2023. 9. 13. 23:21

양방향 연결 리스트 

 

 

양방향 연결 리스트 

 

그전까지와는 다르게 노드들은 동시에 양쪽으로 연결되어 있다. 

따라서 연결 리스트 정의는 다음과 같다. 

 

typedef struct _node
{
    Data data;
    struct _node*next;
    struct _node*prev;
} Node;

일반적인 양방향 연결 리스트
더미노드 양방향 연결

 

양방향 연결 리스트의 구현 

 

void LInsert(List*plist, Data data)
{
    Node*newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    
    newNode->next = plist->head;
    newNode->prev = NULL;
    plist->head = newNode;
    
    (plist->numOfData)++;
}

 

 

  • 데이터 조회 LPrevious(List*plist, Data*pdata)
int LPrevious(List*plist, Data*pdata)
{
    if(plist->cur->prev == NULL)
    	return FALSE;
        
    plist->cur = plist->cur->prev;
    *pdata = plist->cur->data;
    return TRUE;
}

 

LNext 함수 반대 방향으로 데이터를 조회한다. 

따라서 prev 를 사용하여 cur을 이동시킨다. 

 

 

 

*문제 05-2 풀어보기 

더미 노드 기반의 양방향 연결 리스트 구현 

 

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

연결 리스트 3-1  (0) 2023.09.13
연결 리스트 2-3  (0) 2023.09.12
연결 리스트 2-2  (0) 2023.09.12
연결 리스트 2-1  (0) 2023.09.11
연결 리스트 1  (0) 2023.09.11