问题描述
队列操作题。根据输入的操作命令,操作队列(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输入格式
第一行一个数字N。
下面N行,每行第一个数字为操作命令(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
下面N行,每行第一个数字为操作命令(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输出格式
若干行每行显示一个2或3命令的输出结果。注意:2.出队命令可能会出现空队出队(下溢),请输出“no”,并退出。
样例输入
7
1 19
1 56
2
3
2
3
2
1 19
1 56
2
3
2
3
2
样例输出
19
1
56
0
no
1
56
0
no
数据规模和约定
1<=N<=50
简单的队列操作
我将结果保存在一个string数组中
注意点:2.出队命令可能会出现空队出队(下溢),请输出“no”,并退出
即for循环break
1 #include<iostream> 2 #include<cstring> 3 #include<sstream> 4 using namespace std; 5 string to_string(int x){//int转string 6 ostringstream o; 7 if(o<<x) 8 return o.str(); 9 return "error"; 10 } 11 int main() 12 { 13 string s[1000];//保存输出的结果 14 int sno;//s数组的下标 15 int num,head,tail;//num为输入的行数 16 int j;//队列的下标 17 int q[1000];//队列 18 cin>>num; 19 tail=head=j=sno=0;//各个初始化 20 for(int i=0;i<num;i++) 21 { 22 int x,y; 23 cin>>x; 24 if(x==1){ 25 cin>>y; 26 q[j++]=y;//入队 27 tail++; 28 } 29 else if(x==2) 30 { 31 if(head>=tail) 32 { 33 s[sno++]="no"; 34 break; 35 }//队列没元素 36 else 37 { 38 s[sno++]=to_string(q[head]);//将队首元素保存在s数组 39 head++;//出队操作 head后移 40 } 41 } 42 else if(x==3) 43 { 44 s[sno++]=to_string(tail-head);//将队列元素个数保存到s数组 45 } 46 } 47 48 for(int i=0;i<sno;i++) 49 { 50 cout<<s[i]<<endl; 51 } 52 return 0; 53 }