#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