代码
#include<bits/stdc++.h>
using namespace std;
#define OK true
#define ERROR false
const int MAXSIZE=100;
typedef struct{
int *base;
int front;
int rear;
}SqQueue;
bool InitQueue(SqQueue *Q){
Q->base=(int *)malloc(MAXSIZE*sizeof(int));
if(!Q->base) exit(OVERFLOW);
Q->front=Q->rear=0;
return OK;
}
int QLength(SqQueue Q){
return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;
}
bool EnQueue(SqQueue *Q,int e){
if((Q->rear+1)%MAXSIZE==Q->front) return ERROR;
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXSIZE;
return OK;
}
bool DeQueue(SqQueue *Q,int *e){
if(Q->front==Q->rear) return ERROR;
*e=Q->base[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
return OK;
}
bool Print(SqQueue Q){
for(int i=Q.front;i<Q.rear;++i)
cout<<Q.base[i]<<' ';
return 1;
}
int main(){
SqQueue queue;
int elem,n;
InitQueue(&queue);
printf("输入队列元素的个数:\n");
cin>>n;
cout<<endl;
printf("输入队列%d个元素:\n",n);
for(int i=1;i<=n;i++)
{
cin>>elem;
EnQueue(&queue, elem);
}
printf("输出队列元素:\n");
Print(queue);
printf("\n输入要出队的队列元素个数:\n");
int i;
scanf("%d", &i);
while(i != 0)
{
DeQueue(&queue, &elem);
i--;
}
printf("输出剩下的元素:\n");
Print(queue);
}