今日书写草率,事出有因~
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define INITSIZE 20
typedef struct {
int *elem;
int front;
int rear;
}SqQueue;
int INIT(SqQueue *Q)
{
int *q=(int *)malloc(INITSIZE*sizeof(int));
if(q==NULL)
{
return -1;
}
Q->elem = q;
Q->front=Q->rear=0;
return 0;
}
int EnQueue(SqQueue *Q,int elem)
{
if(Q->elem==NULL)
{
return -1;
}
if((Q->rear+1)%INITSIZE==Q->front)
{
return -1;//队满
}
Q->elem[Q->rear]=elem;
Q->rear=(Q->rear+1)%INITSIZE;
return 0;
}
int DEQueue(SqQueue *Q,int *elem)
{
if(Q->elem==NULL)
{
return -1;
}
if(Q->front==Q->rear)
{
return -1;//队空
}
*elem=Q->elem[Q->front];
Q->front=(Q->front+1)%INITSIZE;
return 0;
}
int Claer(SqQueue *Q)
{
if(Q->elem==NULL)
{
return -1;
}
Q->front=Q->rear=0;
return 0;
}
int Destory(SqQueue *Q)
{
if(Q->elem==NULL)
{
return -1;
}
free(Q->elem);
Q->elem=NULL;
Q->front=Q->rear=0;
return 0;
}
int Queuelength(SqQueue Q)
{
return (Q.rear-Q.front+INITSIZE)%INITSIZE;
}
int Empty(SqQueue Q)
{
if(Q.front==Q.rear)
{
return 1;
}
return 0;
}