数据结构循环队列

代码

#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);
}

猜你喜欢

转载自www.cnblogs.com/mch5201314/p/10132694.html