#include <stdio.h>
#include <assert.h>
/*头部插入,尾部删除*/
#define QUEUE_SIZE 100
#define OK 0
#define ERR 1
/*
**队列结构体
*/
typedef struct S_QUEUE
{
int data[QUEUE_SIZE];
int front;
int rear;
}squeue;
int Queue_Isfull(squeue *sq);
int Queue_Isempty(squeue *sq);
void Queue_Creat(squeue *sq);
void Queue_In(squeue *sq,int value);
int Queue_Exit(squeue *sq);
/*
**创建队列
**Queue_Creat
*/
void Queue_Creat(squeue *sq)
{
sq->front=0;
sq->rear=0;
}
/*
**入队
**Queue_Inset
*/
void Queue_In(squeue *sq,int value)
{
/*入队先判读队列是否已满*/
assert(Queue_Isfull(sq));
/* sq->front++;
if(sq->front==QUEUE_SIZE)
sq->front=0; */
sq->front=(sq->front+1)%QUEUE_SIZE;
sq->data[sq->front]=value;
}
/*
**出队
**Queue_delete
*/
int Queue_Exit(squeue *sq)
{
/*检查队列是否为满*/
assert(Queue_Isempty(sq));
sq->rear=(sq->rear+1)%QUEUE_SIZE;
return sq->data[sq->rear];
}
/*
**判断队列是否为空
**Queue_Isempty
*/
int Queue_Isempty(squeue *sq)
{
if(sq->front==sq->rear)
return OK;
else
return ERR;
}
/*
**判断队列是否为满
**Queue_Isfull
*/
int Queue_Isfull(squeue *sq)
{
if((sq->front+1)%QUEUE_SIZE==sq->rear)
return OK;
else
return ERR;
}
int main()
{
squeue sq;
int i;
int num,num1,num2,num3;
Queue_Creat(&sq);
num1=1;
num2=2;
num3=3;
Queue_In(&sq,num1);
Queue_In(&sq,num2);
Queue_In(&sq,num3);
for(i=1;i<=3;i++)
{
num=Queue_Exit(&sq);
printf("num%d=%d\n",i,num);
}
return 0;
}
数据结构之队列
最新推荐文章于 2024-08-10 23:17:45 发布