大故事家 2018-05-13
描述
根据给定的空间构造顺序循环队列,规定队满处理方法为少用一个元素空间。例如,给定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"iostream" #include"string" using namespace std; typedef int element; class Queue{ private: element *arr; int front; int maxsize; int tail; public: Queue(int size){ maxsize = size; arr = new element[size]; front = ; tail = ; } bool empty(){ return tail == front; } bool full(){ return (tail + ) % maxsize == front; } bool push(element data){ if(full()){ cout<<"out"<<endl; return false; } arr[tail] = data; tail = (tail + ) % maxsize; return true; } int length(){ return (tail - front + maxsize) % maxsize; } element pop(){ if(empty()){ return false; } int temp = front; front = (front + ) % maxsize; return arr[temp]; } element getFront(){ if(empty()){ return arr[-]; } return arr[front]; } }; int main(){ element data; int n; string s; cin>>n; Queue myq(n); cin>>n; while(n--){ cin>>s; if(s=="in"){ cin>>data; myq.push(data); } else{ myq.pop(); } } while(!myq.empty()){ cout<<myq.pop()<<ends; } cout<<endl; return ; } /* 4 7 in 1 in 2 in 5 in 6 out out in 8 */