자료구조 - 큐
이중링크드 리스트를 이용한 큐(queue) 구현
1. 구조체 구현
typedef struct _node{
int value;
struct _node *next;
struct _node *prev;
}node, *nptr;
typedef struct _queue{
nptr front;
nptr rear;
int count;
}queue;
2. init 구현
queue *init_queue()
{
queue *qptr = (queue*)malloc(sizeof(queue));
qptr->front = NULL;
qptr->rear = NULL;
qptr->count = 0;
return qptr;
}
3. edqueue 구현
void enqueue(queue *qptr, int _value)
{
node *new_node = (node*)malloc(sizeof(node));
new_node->value = _value;
new_node->next = NULL;
new_node->prev = NULL;
if(qptr->count == 0)
{
qptr->front = new_node;
qptr->rear = new_node;
}
else
{
qptr->rear->next = new_node;
new_node->prev = qptr->rear;
qptr->rear = new_node;
}
qptr->count++;
}
4. dequeue 구현
void dequeue(queue *qptr)
{
nptr remove;
if(qptr->count == 0)
{
printf("Error : out of range\n");
}
else if(qptr->count == 1)
{
remove = qptr->rear;
qptr->rear = NULL;
qptr->front = NULL;
qptr->count--;
free(remove);
}
else
{
remove = qptr->front;
remove->next->prev = NULL;
qptr->front = remove->next;
free(remove);
qptr->count--;
}
}
Result
'Computer Science > Data Structure' 카테고리의 다른 글
[컴퓨터 과학] - 알고리즘의 기초 자료구조 분석하기(data structure) (0) | 2021.04.06 |
---|---|
자료 구조 - 덱 (0) | 2018.03.27 |
자료구조 - 스택 (0) | 2018.03.21 |
자료구조 - 원형 이중 링크드 리스트 (1) | 2018.03.20 |
자료구조 - 이중 링크드 리스트 (0) | 2018.03.14 |