이중 연결 리스트의 노드를 맨 앞에 삽입하는 함수에 대한 샘플 코드를 작성해보자.
이중 연결 리스트는 노드의 왼쪽과 오른쪽의 값이 서로 연결되어 있는 자료구조이다.
1. 구조체 정의
typedef struct doublyNode {
int value;
struct doublyNode* next;
struct doublyNode* prev;
} DNode;
이중 연결 리스트의 노드를 정의하는 구조체이다. 각 노드는 값 (value), 다음 노드에 대한 포인터(next),
이전 노드에 대한 포인터(prev)를 가진다.
2. 전역 변수
DNode* head = NULL;
DNode* tail = NULL;
리스트의 시작과 끝을 가리키는 head , tail 포인터를 NULL 값으로 초기화해준다.
3. 노드 삽입 함수
void insertDNodeFront(int data) {
DNode* newNode = (DNode*)malloc(sizeof(DNode)); // 새로운 노드를 할당
newNode->value = data;
newNode->prev = newNode->next = NULL;
if (head == NULL) {
head = newNode;
tail = newNode;
} else {
newNode->next = head;
head->prev = newNode;
head = newNode;
}
}
이 함수는 새로운 노드를 리스트의 맨 앞에 삽입한다. 리스트가 비어있을 경우, 새로운 노드가 'head'와 'tail'이 된다.
그렇지 않으면, 새로운 노드는 현재의 'head' 앞에 삽입된다.
4. 테스트 및 출력
int main() {
insertDNodeFront(10);
insertDNodeFront(20);
insertDNodeFront(30);
DNode* current = head;
while (current != NULL) {
printf("%d ", current->value);
current = current->next;
}
return 0;
}
main 함수에서는 노드를 삽입하고, 리스트의 모든 노드를 출력하여 삽입 결과를 확인한다.
'자료구조&알고리즘' 카테고리의 다른 글
자료구조란? (5) | 2024.10.04 |
---|---|
[이중 연결 리스트] 노드를 맨 뒤에 삽입하는 방법 (0) | 2024.06.01 |
[단일 연결 리스트] 문자열 노드 전체 제거 (0) | 2024.05.30 |
[단일연결리스트] 노드 정렬 삽입(오름차순) (0) | 2024.05.25 |
[단일 연결 리스트 ] 특정 값 노드 삭제 | 중간 값 삭제 (0) | 2024.05.25 |