数据结构循环队列

代码

#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);
}
posted @ 2018-12-17 17:25  ChunhaoMo  阅读(151)  评论(0编辑  收藏  举报