队列的顺序存储
#include<iostream>
using namespace std;
#define MAXSIZE 6
typedef int ElementType;
typedef struct QNode* Queue;
struct QNode{
ElementType Data[MAXSIZE];
int rear;
int front ;
};
void AddQ(ElementType item,Queue PtrQ);
ElementType DeleteQ(Queue PtrQ);
int main(){
Queue Q=(Queue)malloc(sizeof(QNode));
Q->front=-1;
Q->rear=-1;
AddQ(1,Q);
AddQ(2,Q);
AddQ(3,Q);
AddQ(4,Q);
AddQ(5,Q);
cout<<DeleteQ(Q)<<endl;
cout<<DeleteQ(Q)<<endl;
cout<<DeleteQ(Q)<<endl;
cout<<DeleteQ(Q)<<endl;
cout<<DeleteQ(Q)<<endl;
DeleteQ(Q);
return 0;
}
void AddQ(ElementType item,Queue PtrQ){
if(PtrQ->front==-1&&PtrQ->rear==MAXSIZE-2){
printf("队列满");
return ;
}
if((PtrQ->rear+1)%MAXSIZE==PtrQ->front){
printf("队列满");
return ;
}
PtrQ->rear=(PtrQ->rear+1)%MAXSIZE;
PtrQ->Data[PtrQ->rear]=item;
}
ElementType DeleteQ(Queue PtrQ){
if(PtrQ->front==PtrQ->rear){
printf("队列空");
return NULL;
} else{
PtrQ->front=(PtrQ->front+1)%MAXSIZE;
return PtrQ->Data[PtrQ->front];
}
}