队列的顺序存储结构

#include <bits/stdc++.h>
#define OK 1
#define ERROR 0
#define MAXQSIZE 3
typedef int Status;
typedef int ElemType;
typedef struct QNode{
    ElemType *base;
    int front;
    int rear;
}SqQueue;
Status InitQueue(SqQueue &Q){
    Q.base=(ElemType*)malloc(sizeof(ElemType)*MAXQSIZE);
    if(!Q.base) return ERROR;
    Q.front=Q.rear=0;
    return OK;
}
Status EnQueue(SqQueue &Q,ElemType e){
    if((Q.rear+1)%MAXQSIZE==Q.front) return ERROR;
    Q.base[Q.rear]=e;
    Q.rear=(Q.rear+1)%MAXQSIZE;
    return OK;
}
Status DeQueue(SqQueue &Q,ElemType &e){
    if(Q.front==Q.rear) return ERROR;
    e=Q.base[Q.front];
    Q.front=(Q.front+1)%MAXQSIZE; 
    return OK;
}
void print(SqQueue Q){
    while(Q.front!=Q.rear){
        printf("%d ",Q.base[Q.front]);
        Q.front=(Q.front+1)%MAXQSIZE;
    }
}
int main(){
    SqQueue Q;
    ElemType e;
    InitQueue(Q);
    EnQueue(Q,1);
    EnQueue(Q,2);
    DeQueue(Q,e);
    print(Q);
}

 

posted @ 2021-09-23 21:08  不负韶华。  阅读(12)  评论(0编辑  收藏  举报