头文件queue.h定义队列需要的接口,这里包括了动态数组和链式需要的create_queue和destory_queue
queue.h
#include
#define QUEUE_TYPE int
void create_queue(size_t size);
void destory_queue(void);
void insert(QUEUE_TYPE value);
void delete(void);
QUEUE_TYPE first(void);
int is_empty(void);
int is_full(void);
静态数组实现的队列
#include"queue.h"
#include
#include
#define QUEUE_SIZE 100
#define ARRAY_SIZE (QUEUE_SIZE+1)
static QUEUE_TYPE queue[ARRAY_SIZE];
static size_t front = 1;
static size_t rear = 0;
void insert(QUEUE_TYPE value)
{
assert(!is_full());
rear = (rear+1)% ARRAY_SIZE;
queue[rear]=value;
}
void delete(void)
{
assert(!is_empty());
front=(front+1)%ARRAY_SIZE;
}
QUEUE_TYPE first(void)
{
assert(!is_empty());
return queue[front];
}
int is_empty(void)
{
return ( rear+1 )%ARRAY_SIZE==front;
}
int is_full(void)
{
return ( rear+2 )%ARRAY_SIZE==front;
}
此处是循环链表,判断是满还是空是在让队列中始终有一个元素的情况下实现的。
标签:QUEUE,ADT,void,queue,抽象数据类型,front,ARRAY,type,SIZE
来源: https://blog.csdn.net/wcm_lucky/article/details/89003255