#include<stdlib.h>
#define QUEUE_TYPE int
/*队列元素的类型*/
void creat_queue(size_t size);
/*创建一个队列,这只适用于使用动态分配数组的队列,链式的不
需要,普通数组实现的队列在编译时就已经确定大小*/
void destroy_queue();
//销毁一个队列,这只适用于链式的和动态分配数组的队列,因为普通数组会被自动清栈。
void insert(QUEUE_TYPE value);
void delete();
//从队列里移除一个元素,并将其丢弃
QUEUE_TYPE first();
//返回队列的第一个元素值,但不删除
int is_empty();
int is_full();
头文件
//
#include<stdio.h>
#include<stdlib.h>
#include"queue.h"
#define false 0
#define true 1
//用一个普通数组(循环数组)实现队列
//数组的长短用#define 定义
#define QUEUE_SIZE 100
#define ARRAY_SIZE (QUEUE_SIZE+1) //数组的长度
QUEUE_TYPE queue[ARRAY_SIZE];
size_t front = 1;
size_t rear = 0;
void insert(QUEUE_TYPE value)
{
if (!is_full())
{
rear = (rear + 1) % ARRAY_SIZE;
queue[rear] = value;
}
}
void delete()
{
if (!is_empty())
{
front = (front+1) % ARRAY_SIZE;
}
}
QUEUE_TYPE first()
{
if (!is_empty())
{
return queue[front];
}
}
int is_empty()
{
return (rear+1) % ARRAY_SIZE==front;
}
//这时,队列里实际上没有真正满
int is_full()
{
{
return (rear + 2) % ARRAY_SIZE == front;
}
}
int main()
{
insert(23);
insert(22);
insert(23);
insert(24);
int n= first();
printf("%d\n",n);
return 0;
}