队列的顺序存储结构
#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); }