网课题:双端循环队列,可以从队头或队尾入队,从队头出队。如果要入队的参数e,小于队头队尾和的平均值,则从队头入队,否则从队尾入队
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 8
typedef struct squeue{
int *data;
int front;
int rear;
}squeue;
void initsqueue(squeue& Q)
{
Q.data=(int*)malloc(Maxsize*sizeof(int));
Q.front=0;
Q.rear=0;
}
void Enqueue(squeue& Q,int e)
{
int t=(Q.data[Q.front]+Q.data[(Q.rear-1+Maxsize)%Maxsize])/2;
if(e<t)
{
Q.front=(Q.front-1+Maxsize)%Maxsize;
Q.data[Q.front]=e;
}
else
{
Q.data[Q.rear]=e;
Q.rear=(Q.rear+1)%Maxsize;
}
}
void Dequeue(squeue& Q)
{
int e;
if(Q.rear!=Q.front)
{
e=Q.data[Q.front];
Q.front=(Q.front+1)%Maxsize;
}
}