https://blog.csdn.net/morixinguan/article/details/51374296
数据结构---队列(C语言数组实现)
队列是先进先出的过程。简单地画一幅画来描述一下队列:
一个简单的、由数组实现的队列,可以由以下几种最基本的操作组成:
1、判断队列是否为空
2、判断队列是否已经满了
3、入队
4、出队
代码如下:
#include <stdio.h>
#include <stdlib.h>
//队列大小
#define SIZE 1024
static int queue[SIZE] = {0};
static int head, tail;
int Is_Empty(void)
{
//判断队列是否为空,如果头是尾,就证明为空
return head == tail;
}
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();
}