/*顺序存储队列的基本的操作*/ #include<iostream> using namespace std; #define Queue_MaxSize 100 typedef struct { int elem[Queue_MaxSize]; int front; int rear; int length; }Queue; void Init_Queue(Queue *Q) { Q->rear=Q->front=0; Q->length=0; } void Destroy_Queue(Queue *Q) { delete &Q->elem[Queue_MaxSize]; Q->front=Q->rear=0; } bool IsEmpty(Queue *Q) { if(Q->front==Q->rear) { return true; } else { return false; } } bool IsFull(Queue *Q) { if(Q->rear==Queue_MaxSize) { return true; } else { return false; } } void Creat_Queue(Queue *Q,int n) { int i; for(i=1;i<=n;i++) { cin>>Q->elem[Q->rear++]; Q->length++; } } void Enter_Queue(Queue *Q,int x) { if(IsFull(Q)) { cout<<"队列已满"<<endl; return ; } Q->elem[Q->rear++]=x; Q->length++; return ; } void Pop_Queue(Queue *Q) { if(IsEmpty(Q)) { cout<<"队列已空"<<endl; return ; } Q->front++; Q->length--; } int Get_head_Queue(Queue *Q) { if(IsEmpty(Q)) { cout<<"队列已空,无法得到队头元素"<<endl; } int x; x=Q->elem[Q->front]; return x; } void Out_Queue(Queue *Q) { while(Q->front!=Q->rear) { cout<<Q->elem[Q->front++]<<" "; } return ; } int Get_length(Queue *Q) { return Q->length; } int main() { Queue *Q; Q=new Queue; Init_Queue(Q); Creat_Queue(Q,5); Enter_Queue(Q,3); Pop_Queue(Q); Out_Queue(Q); int len; len=Get_length(Q); cout<<len<<endl; return 0; }