头文件queue.h
#ifndef _QUEUE_H
#define _QUEUE_H
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
typedef struct Queue
{
int data[MAX];
int front;
int rear;
}Queue,*PQueue;
PQueue queue_Create();//创建
int queue_JudgeEmpty(PQueue q);//判空
int queue_JudgeFull(PQueue q);//判满
int queue_In(PQueue q,int val);//入队
int queue_Out(PQueue q);//出队
int queue_Length(PQueue q);//求长
int queue_Clean(PQueue q);//清空
int queue_Destroy(PQueue *p);//摧毁
#endif
实现文件queue.c
#include "queue.h"
PQueue queue_Create()//创建
{
PQueue q = (PQueue)malloc(sizeof(Queue));
if(q==NULL)
{
perror("Create fail");
return NULL;
}
q->front=0;
q->rear=0;
return q;
}
int queue_JudgeEmpty(PQueue q)//判空
{
if(q==NULL)
{
perror("Queue is NULL");
return -1;
}
if(q->front==q->rear)
{
return 1;
}
else
{
return 0;
}
}
int queue_JudgeFull(PQueue q)//判满
{
if(q==NULL)
{
perror("Queue is NULL");
return -1;
}
if( ((p->rear+1)%MAX) == p->front)
{
return 1;
}
else
{
return 0;
}
}
int queue_In(PQueue q,int val)//入队
{
if(q==NULL)
{
perror("Queue is NULL");
return -1;
}
if(queue_JudgeFull(q)==1)
{
perror("Queue is Full");
return 0;
}
q->data[q->rear]=val;
q->rear=(q->rear+1)%MAX;
return 1;
}
int queue_Out(PQueue q)//出队
{
if(q==NULL)
{
perror("Queue is NULL");
return -1;
}
if(queue_JudgeEmpty(q)==1)
{
perror("Queue is Empty");
return 0;
}
int val=q->data[q->front];
p->front=(p->front+1)%MAX;
return val;
}
int queue_Length(PQueue q)//求长
{
if(q==NULL)
{
perror("Queue is NULL");
return -1;
}
return (p->rear + MAX - p->front)%MAX;
}
int queue_Clean(PQueue q)//清空
{
if(q==NULL)
{
perror("Queue is NULL");
return -1;
}
q->front=0;
q->rear=0;
return 1;
}
int queue_Destroy(PQueue *p)//摧毁
{
free(*p);
*p=NULL;
return 1;
}
若有错误欢迎指正(*^▽^*)