西南科技大学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)//如果輸入為in則進隊將數據儲存起來 {if((q->rear-q->front)<max-2){q->rear++;scanf("%d",&q->data[q->rear]);}elsescanf("%d",&b);}else if(strcmp(a,"out")==0)//如果為out則出隊 {q->front++;}}while(q->front<=q->rear){printf("%d ",q->data[q->front++]);} }?
總結
以上是生活随笔為你收集整理的西南科技大学OJ题 循环队列0965的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring中资源的加载Resource
- 下一篇: linux怎么安装git服务器,linu