이중 연결 리스트
한 노드에 이전 노드, 다음 노드를 가리키는 포인터 두 개를 가지고 있다
덕분에 단일 연결리스트 처럼 한 방향이 아닌 양 방향으로 이동 가능하다
이중 연결 리스트 노드 생성
struct node {
struct node *llink; // 이전 노드를 포인트
int data;
struct node *rlink; // 다음 노드를 포인트
};
이중 연결 리스트의 종류
원형 이중 연결 리스트에 노드 추가
newnode를 node의 오른쪽에 추가하는 연산
void dinsert(struct node *node,
struct node *newnode)
{
// newnode를 node의 오른쪽에 추가
newnode->llink = node;
newnode->rlink = node->rlink;
node->rlink->llink = newnode;
node->rlink = newnode;
}
원형 이중 연결 리스트에서 노드 삭제
void ddelete(struct node *deleted)
{
deleted->llink->rlink = deleted->rlink;
deleted->rlink->llink = deleted->llink;
free(deleted);
}
'자료구조' 카테고리의 다른 글
[C로 쓴 자료구조] FIFO와 우선순위를 이용한 작업 스케줄링의 비교 (0) | 2022.11.17 |
---|---|
[C로 쓴 자료구조] 미로찾기 (1) | 2022.10.23 |
[C로 쓴 자료구조] 동치 관계 (Equivalence Relations) (0) | 2022.10.21 |
[C로 쓴 자료구조] 원형 리스트 (Circular List) (0) | 2022.10.21 |
[C로 쓴 자료구조] 가용 노드 리스트 (0) | 2022.10.21 |