码迷,mamicode.com
首页 > 编程语言 > 详细

算法提高 队列操作

时间:2017-11-15 00:25:42      阅读:19      评论:0      收藏:0      [点我收藏+]

标签:数字   出队   cin   退出   class   计算   int   问题   head   

问题描述
  队列操作题。根据输入的操作命令,操作队列(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输入格式
  第一行一个数字N。
  下面N行,每行第一个数字为操作命令(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输出格式
  若干行每行显示一个2或3命令的输出结果。注意:2.出队命令可能会出现空队出队(下溢),请输出“no”,并退出。
样例输入
7
1 19
1 56
2
3
2
3
2
样例输出
19
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 } 

 

算法提高 队列操作

标签:数字   出队   cin   退出   class   计算   int   问题   head   

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!