西南科技大學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++]); } }