본문 바로가기
NOTE/Algorithm

자료구조) linked_queue

by DevAthena 2015. 8. 25.
#include <stdio.h>
#include <stdlib.h>
 
typedef struct _node
{
    int data;
    struct _node *link;
}_node;
 
typedef struct _queue
{
    _node *front;
    _node *rear;
}_queue;
 
void init(_queue *q)
{
    q->front = q->rear = NULL;
}
 
int is_empty(_queue *q)
{
    return (q->front == NULL);
}
 
void enqueue(_queue *q, int data)
{
    _node *temp;
    temp = (_node *)malloc(sizeof(_node));
 
    temp->data = data;
    temp->link = NULL;
 
    if (is_empty(q))
    {
        q->front = temp;
        q->rear = temp;
    }
    else
    {
        q->rear->link = temp;
        q->rear = temp;
    }        
}
 
int dequeue(_queue *q)
{
    int item;
 
    _node *temp;
    temp = q->front;
 
    if (is_empty(q))
    {
        printf("empty!\n");
        return NULL;
    }
    else
    {
        item = temp->data;
        q->front = q->front->link;
        if (q->front == NULL)
            q->rear = NULL;
        free(temp);
 
        return item;
    }
}
 
void main()
{
    int i;
    _queue q;
    init(&q);
 
    for (i = 1; i <= 5; i++)
    {
        enqueue(&q, i);
    }
    
    for (i = 1; i <= 6; i++)
    {
        printf("dequeue : %d \n", dequeue(&q));
    }
    
}
cs


'NOTE > Algorithm' 카테고리의 다른 글

자료구조) Graph  (0) 2015.08.25
자료구조) QuickSort  (0) 2015.08.25
자료구조) linked_stack  (0) 2015.08.25
dovelet) maze 최단 거리 미로  (0) 2015.08.25
uva_10074) Take the Land  (0) 2015.08.21