zoukankan      html  css  js  c++  java
  • 算法提高 队列操作

    问题描述
      队列操作题。根据输入的操作命令,操作队列(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 } 
  • 相关阅读:
    【Offer】[5] 【替换空格】
    【Offer】[3-2] 【不修改数组找出重复的数字】
    【Offer】[3-1] 【找出数组中重复的数字】
    【Spring】 IOC Base
    【Java并发】CallBack和Future模式
    【Java并发】并发队列与线程池
    【Java并发】几个常用API
    linux基础_vi和vim快捷键
    python_字典
    python_列表方法
  • 原文地址:https://www.cnblogs.com/tvtaqa/p/7835365.html
Copyright © 2011-2022 走看看