1. 程式人生 > >西南科技大學OJ題 迴圈佇列0965

西南科技大學OJ題 迴圈佇列0965

迴圈佇列

根據給定的空間構造順序迴圈佇列,規定隊滿處理方法為少用一個元素空間。例如,給定5個元素空間構造迴圈佇列,則只能存放4個元素。試根據入隊及出隊操作判斷佇列最後的元素存放情況,並輸出最後佇列中的元素值,即完成給定入隊及出列操作後一次性全部出隊的元素值。要求採用順序佇列完成,少用一個儲存空間的方法區分佇列的空和滿。

輸入

輸入的第一行為一個自然數n,表示要求構造的順序迴圈佇列空間數。 第二行為操作次k,接下來k行為出隊入隊操作,每行各代表一次操作。入隊用in表示,出隊用out表示,如果是入隊,則in隔一空格後為一整數,表示入隊元素值。

輸出

輸出完成所有入隊出隊操作後,一次性出隊元素。用一個空格隔開。可以假定隊在完成所有操作後不為空。

樣例輸入

4
7
in 1
in 2
in 5
in 6
out
out
in 8

樣例輸出

5 8

#include<stdio.h> #include<malloc.h> #include<string.h> struct SqQueue {     int data[100];     int front,rear; }; void InitQueue(SqQueue *&q) {     q=(SqQueue *)malloc(sizeof(struct SqQueue));     q->front=q->rear=-1; } int main()  {     int max,n;     char a[5];     int b;     struct SqQueue *q;     scanf("%d %d",&max,&n);     InitQueue(q);     q->front=0;     for(int i=0;i<n;i++)     {         scanf("%s",a);         if(strcmp(a,"in")==0)         {             if((q->rear-q->front)<max-2)             {                 q->rear++;                 scanf("%d",&q->data[q->rear]);             }             else             scanf("%d",&b);         }         else if(strcmp(a,"out")==0)         {             q->front++;         }     }     while(q->front<=q->rear)     {         printf("%d ",q->data[q->front++]);     } }