头文件
#ifndef _QUEUE_H_
#define _QUEUE_H_
#define SIZE 10
typedef enum {FALSE = 0 , TRUE} BOOL;
typedef int Data;
typedef struct queue
{
Data data[SIZE];
int front; //队头指针
int rear; //队尾指针
}Queue;
//初始化队列
void Init(Queue *q);
//入队列
void Push(Queue *q , Data data);
//出队列
void Pop(Queue *q);
//判断空队列
BOOL Empty(Queue *q);
//判断满队列
BOOL Full(Queue *q);
//获取队头元素
Data GetTop(Queue *q);
#endif // _QUEUE_H_
功能函数
#include "Queue.h"
#include <stdlib.h>
#include <stdio.h>
//初始化队列
void Init(Queue *q)
{
if (NULL == q)
return;
q->front = q->rear;
}
//判断空队列
BOOL Empty(Queue *q)
{
if (NULL == q)
return FALSE;
if(q->front == q->rear)
return TRUE;
return FALSE;
}
//判断满队列
BOOL Full(Queue *q)
{
if (NULL == q)
return FALSE;
if(q->front == (q->rear+1)%SIZE)
return TRUE;
return FALSE;
}
//入队列
void Push(Queue *q , Data data)
{
if (NULL == q)
return ;
if (Full(q) == TRUE)
return;
q->rear = (q->rear+1)%SIZE;
q->data[q->rear] = data;
}
//出队列
void Pop(Queue *q)
{
if (NULL == q)
return ;
if(Empty(q) == TRUE)
return ;
q->front = (q->front+1)%SIZE;
}
//获取队头元素
Data GetTop(Queue *q)
{
if (NULL == q)
return;
if(Empty(q) == TRUE)
exit(-1);
return q->data[(q->front+1)%SIZE];
}