#include <stdio.h>
#include <stdlib.h>
//队列大小
#define SIZE 1024
static int queue[SIZE] = {0};
static int head , tail ;
//0 1
int Is_Empty(void)
{
//判断队列是否为空,如果头是尾,就证明为空
return head == tail ;
}
//0 1
int Is_Full(void)
{
//判断队列是否已经满了
return (head+1)%SIZE == tail ;
}
//入队
int enqueue(int value)
{
if(Is_Full())
{
return 1 ;
}
queue[head] = value ;
head = (head + 1) % SIZE ;
return 0 ;
}
//出队
int dequeue(int *value)
{
if(Is_Empty())
return 1 ;
*value = queue[tail] ;
tail = (tail + 1) % SIZE ;
return 0 ;
}
int main(void)
{
int i ;
int temp ;
int buffer[5] = {1,2,3,4,5};
printf("入队前:\n");
for(i = 0 ; i < 5 ; i++)
{
printf("queue[%d]:%d\n",i,queue[i]);
}
for(i = 0 ; i < 5 ; i++)
{
enqueue(buffer[i]) ;
}
printf("入队后: \n");
for(i = 0 ; i < 5 ; i++)
{
printf("queue[%d]:%d\n",i,queue[i]);
}
printf("出队后: \n");
while(1)
{
if(dequeue(&temp))
break ;
printf("%d\n",temp);
}
getchar();
}
运行结果:
入队前:
queue[0]:0
queue[1]:0
queue[2]:0
queue[3]:0
queue[4]:0
入队后:
queue[0]:1
queue[1]:2
queue[2]:3
queue[3]:4
queue[4]:5
出队后:
1
2
3
4
5