算法提高 队列操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法提高 队列操作相关的知识,希望对你有一定的参考价值。

问题描述
  队列操作题。根据输入的操作命令,操作队列(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 } 

 

以上是关于算法提高 队列操作的主要内容,如果未能解决你的问题,请参考以下文章

# Java 常用代码片段

# Java 常用代码片段

算法:用双队列实现栈

数据结构与算法--队列

Dijkstra算法介绍及其优先队列优化和斐波那契堆优化

《图解数据结构与算法》(Java代码实现注释解析算法分析)