Deque
- Double Ended Queue라는 이름처럼 기존의 큐와 다르게 앞,뒤에서 바로 자료를 넣고 뺄 수 있는 구조
기본 구조
typedef struct s_node
{
int num;
struct s_node *prev;
struct s_node *next;
} t_node;
typedef struct s_deque
{
t_node *first;
t_node *last;
} t_deque;
Deque 생성
t_deque *make_deque(void)
{
t_deque *new_deque;
new_deque = malloc(sizeof(t_deque));
new_deque->first = NULL;
new_deque->last = NULL;
return (new_deque);
}
마지막에 값 넣기
t_node *add_node(t_deque *deq, int num)
{
t_node *new_node;
new_node = malloc(sizeof(t_node));
if (new_node == NULL)
return (0);
new_node->num = num;
new_node->next = NULL;
new_node->prev = deq->last;
if (deq->last == NULL && deq->first == NULL)
{
deq->last = new_node;
deq->first = new_node;
}
else
{
if (deq->last != NULL)
deq->last->next = new_node;
deq->last = new_node;
}
return (new_node);
}