/////
Search
Duplicate
🔃

양방향 연결리스트

양방향 연결 리스트

노드

typedef struct s_node { int value; t_node *prev; t_node *next; } t_node;
C
복사

리스트

typedef struct s_list { t_node *head; t_node *tail; } t_list;
C
복사
head
tail
#include <stdio.h> #include <stdlib.h> typedef struct s_node t_node; typedef struct s_node { int value; t_node *prev; t_node *next; } t_node; typedef struct s_list { t_node *head; t_node *tail; } t_list; void makeNode(t_list *A, int value) { t_node *node = (t_node *)malloc(sizeof(t_node)); node->value = value; if (A->head == NULL) { A->head = node; A->tail = node; } else { A->tail->next = node; node->prev = A->tail; A->tail = node; } // free(node); } int main() { t_list *A; A->head = NULL; A->tail = NULL; makeNode(A, 1); printf("==%d\n", A->head->value); makeNode(A, 2); printf("==%d\n", A->head->value); makeNode(A, 3); printf("==%d\n", A->head->value); return (0); }
C
복사
malloc 을 해줘야 하는 이유 (free를 하면 안되는 이유)
노드를 새로 추가할때 malloc을 안해주거나 free를 해주면 같은 주소값에 새로운 노드 값이 들어가기 때문에 덮어씌우기(?)가 된다.
따라서 malloc을 계속 해주어야 그 공간에 값이 있으므로 다른 주소값을 지정해주기 때문에 덮어씌워지는 것이 방지된다.