zoukankan      html  css  js  c++  java
  • 栈与队列问题:双向队列

     

    双向队列

    Time Limit: 1000MS Memory limit: 65536K

    题目描述

          想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。
    现在给你一系列的操作,请输出最后队列的状态;
    命令格式:
    LIN X  X表示一个整数,命令代表左边进队操作;
    RIN X  表示右边进队操作;
    ROUT
    LOUT   表示出队操作;

    输入

    第一行包含一个整数M(M<=10000),表示有M个操作;
    以下M行每行包含一条命令;
    命令可能不合法,对于不合法的命令,请在输出中处理;

    输出

    输出的第一行包含队列进行了M次操作后的状态,从左往右输出,每两个之间用空格隔开;
    以下若干行处理不合法的命令(如果存在);
    对于不合法的命令,请输出一行X ERROR
    其中X表示是第几条命令;

    示例输入

    8
    LIN 5
    RIN 6
    LIN 3
    LOUT
    ROUT
    ROUT
    ROUT
    LIN 3

    示例输出

    3
    7 ERROR


     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 int main()
     5 {
     6     int f[100000];
     7     int i,j;
     8     int n;
     9     int sum=0,s=0;
    10     int gh[100000]={-1};
    11     scanf("%d",&n);
    12     for(j=1;j<=n;j++)
    13     {
    14         char g[20];
    15 
    16         scanf("%s",g);
    17         if(strcmp(g,"LIN")==0)
    18         {
    19             int x;
    20             scanf("%d",&x);
    21             if(sum==0)
    22             f[sum]=x;
    23             else
    24             {
    25             for(i=sum;i>=1;i--)
    26             f[i]=f[i-1];
    27             f[0]=x;
    28             }
    29             sum++;
    30         }
    31         if(strcmp(g,"RIN")==0)
    32         {
    33             int x;
    34             scanf("%d",&x);
    35             f[sum]=x;
    36             sum++;
    37         }
    38         if(strcmp(g,"LOUT")==0)
    39         {
    40             if(sum==1)sum=0;
    41             else if(sum==0)
    42             {
    43                 gh[s]=j;
    44                 s++;
    45             }
    46             else
    47             {
    48             for(i=0;i<=sum-2;i++)
    49             f[i]=f[i+1];
    50             sum=sum-1;
    51             }
    52         }
    53         if(strcmp(g,"ROUT")==0)
    54         {
    55             if(sum==0)
    56             {
    57                 gh[s]=j;
    58                 s++;
    59             }
    60             else sum=sum-1;
    61         }
    62     }
    63     for(i=0;i<=sum-1;i++)
    64     if(i==sum-1)printf("%d
    ",f[i]);
    65     else printf("%d ",f[i]);
    66     for(i=0;i<=s-1;i++)
    67     if(gh[i]!=-1)printf("%d ERROR
    ",gh[i]);
    68     return 0;
    69 }
    View Code
  • 相关阅读:
    去除安卓apk中的广告
    公司固定资产管理细则
    固定资产基础知识
    C#的WebBrowser操作frame
    C#程序集版本控制文件属性祥解
    c#使用RSA进行注册码验证
    Web前端开发十日谈
    Web.xml配置详解
    IBM WebSphere MQ的C#工具类以及源码(net)
    Castle IOC FOR MVC 使用方法
  • 原文地址:https://www.cnblogs.com/kuangdaoyizhimei/p/3225651.html
Copyright © 2011-2022 走看看