#include<stdio.h> 
 
#define SIZE 5 
int queue[SIZE]; 
int head, tail; 
 
void enqueue(int value); 
int dequeue(void); 
 
int main(void) 
{ 
    head = tail = 0;    //初期化 
    int data, i; 
 
    enqueue(1); 
    enqueue(2); 
    dequeue(); 
    enqueue(3); 
    dequeue(); 
    enqueue(4); 
    enqueue(5); 
    dequeue(); 
    for(i=0; i<SIZE; i++){ 
      printf("queue[%d]=%d¥n", i, queue[i] ); 
    } 
 
    return 0; 
} 
 
void enqueue(int value) 
{ 
    if( head == (tail+1)%SIZE ){ 
        printf("キューは満杯で入りませんでした¥n"); 
    }else{ 
        queue[tail] = value; 
        tail = tail + 1; 
    } 
    tail = tail % SIZE; 
} 
 
int dequeue(void) 
{ 
    int value; 
    if( head == tail ){ 
        printf("キューは空で取り出せませんでした¥n"); 
        return 0; 
    }else{ 
        value = queue[head]; 
        queue[head] = 0;        //抽出後に0を代入 
        head = head + 1; 
    } 
    head = head % SIZE; 
    return value; 
} 
