HyeLog
[자료구조] 이중 연결 리스트 (Doubly Linked List) 본문
<큐가 오름차순으로 정렬되게 삽입하는 코드>
void insert(int data) {
NodePointer i, element;
i = head->next;
while(i->data <= data && i != tail)
i = i->next;
element = (NodePointer) malloc (sizeof(Node));
element->data = data;
i->prev->next = element;
element->prev = i->prev;
i->prev = element;
element->next = i;
}
<참고할 만한 링크>
https://opentutorials.org/module/1335/8940
Doubly linked list (이중 연결 리스트) - Data Structure (자료구조)
소개 doubly linked list의 핵심은 노드와 노드가 서로 연결되어 있다는 점입니다. 아래 그림을 보면 단순 연결 리스트(linked list)와는 다르게 노드가 이전 노드(previous)와 다음 노드(next)로 구성되어 있
opentutorials.org
[ 자료구조 ] 4. 이중 연결 리스트(Double Linked List)
이번 시간에는 이중 연결 리스트(Double Linked List)에 대해서 알아보도록 하겠습니다. 이중 연결 리스트는 말 그대로 모든 노드가 이전 노드와 다음 노드에 대한 정보를 모두 저장하고 있는 리스트
ndb796.tistory.com
https://jow1025.tistory.com/217
헤드노드를 이용한 이중연결리스트의 구현
헤드노드를 이용한 간단한 이중연결리스트의 구현프로그램입니다. 헤드노드는 구현의 편의를 위해 사용하는 것으로, 헤드노드를 이용해 이중연결리스트를 원형리스트와 결합된 형태로 사용할
jow1025.tistory.com
https://hubbleconstant.tistory.com/39
이중 연결 리스트(Double linked list), 이중 원형 연결 리스트 예제
오늘은 이중 연결 리스트(Double linked list)에 대해서 알아보려고 합니다. 이중 연결 리스트는 prev, next라는 2개의 방향을 가리키는 포인터를 가지고 있는 리스트입니다. prev라는 이전 노드를 가리키
hubbleconstant.tistory.com
2.2.5 이중 연결 리스트 (Double Linked List)
2.2.5 이중연결리스트 2.2.5.1 이중 연결 리스트의 개념 -> 하나의 노드가 선행 노드와 다음 노드에 대한 두 개의 링크를 가지는 연결 리스트이다. -> 이중 연결 리스트는 헤드
ehrn35.tistory.com
https://gurumee92.tistory.com/126
이중 연결 리스트 구현
Contents 시작하며... 이중 연결 리스트 정의 이중 연결 리스트의 핵심 원리 리스트 ADT 확인 리스트의 공통 main 함수 이중 연결 리스트 구현 이중 연결 리스트 구조체 정의 리스트 생성과 파괴 리스
gurumee92.tistory.com
<삽입 코드(push_back)>
void Insert_Tail(Node *New_Node, int data)
{
New_Node = CreateNode();
if(New_Node == NULL) return;
// 새로운 노드 연결.
New_Node->prev = Head->prev;
New_Node->next = Head;
New_Node->prev->next = New_Node;
New_Node->next->prev = New_Node;
// data 삽입.
New_Node->data = data;
}
<큐가 비었는지 확인하는 코드>
uint8 Check_Node_Empty()
{
if(Head->prev == Head && Head->next == Head)
return FAIL;
else
return SUCCESS;
}
<삭제 코드(pop_front)>
uint8 Remove_Head()
{
Node *Target = Head->next;
// Node의 존재 여부를 확인.
if(!Check_Node_Empty())
return FAIL;
Target->prev->next = Target->next;
Target->next->prev = Target->prev;
free(Target);
return SUCCESS;
}
'CS' 카테고리의 다른 글
[알고리즘] 브루트포스 - 재귀 (0) | 2022.04.12 |
---|---|
[C++] 벡터(Vector) 최댓값, 최솟값 인덱스 구하기 (0) | 2022.01.31 |
[C++] STL 컨테이너 - 덱(Deque) (0) | 2021.10.17 |
[알고리즘] 그리디(Greedy) (0) | 2021.10.17 |
[자료구조] 큐(Queue), 원형 큐(Circular Queue) (0) | 2021.10.09 |