双向队列

简介: 双向队列

双向队列

Time Limit: 1000 ms Memory Limit: 65536 KiB

SubmitStatistic

Problem Description

     想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。

现在给你一系列的操作,请输出最后队列的状态;

命令格式:

LIN X  X表示一个整数,命令代表左边进队操作;

RIN X  表示右边进队操作;

ROUT

LOUT   表示出队操作;

Input

第一行包含一个整数M(M<=10000),表示有M个操作;

以下M行每行包含一条命令;

命令可能不合法,对于不合法的命令,请在输出中处理;

Output

输出的第一行包含队列进行了M次操作后的状态,从左往右输出,每两个之间用空格隔开;

以下若干行处理不合法的命令(如果存在);

对于不合法的命令,请输出一行X ERROR

其中X表示是第几条命令;

Sample Input

8

LIN 5

RIN 6

LIN 3

LOUT

ROUT

ROUT

ROUT

LIN 3

Sample Output

3

7 ERROR

Hint

 

Source

wanglin

思路:感觉最重要的是,在一个方法行不通的时候,要换另一种方法(可能你感觉你的代码没毛病,但就是过不了)

首先,定义一个大于极限的数组,然后输入,如果里面没有值的话,就归位,剩下的就看代码吧!!!

#include<stdio.h>
#include<string.h>
int main()
{
    int m, x, i;
    char a[100];
    int b[10050];
    int c[100050];
    scanf("%d", &m);
    int num1 = 10050;
    int num2 = 10050;
    int num3 = 1;
    memset(b,0,sizeof(b));
    for(i = 1; i <= m; i++)
    {
        scanf("%s", a);
        if(strcmp(a, "LIN") == 0)
        {
            scanf("%d", &x);
            c[num1] = x;
            num1--;
        }
        else if(strcmp(a, "RIN") == 0)
        {
            scanf("%d", &x);
            num2++;
            c[num2] = x;
        }
        else if(strcmp(a, "LOUT") == 0)
        {
            if(num1 >= num2)
            {
                b[num3] = i;
                num3++;
                num1 = 10050;
                num2 = 10050;
            }
            else
            {
                num1++;
            }
        }
        else if(strcmp(a, "ROUT") == 0)
        {
            if(num1 >= num2)
            {
                b[num3] = i;
                num3++;
                num1 = 10050;
                num2 = 10050;
            }
            else
            {
                num2--;
            }
        }
    }
    for(i = num1+1; i <= num2; i++)
    {
        if(i == num2)
        {
            printf("%d\n", c[i]);
        }
        else
        {
            printf("%d ", c[i]);
        }
    }
    for(i = 1; i < num3; i++)
    {
       printf("%d ERROR\n", b[i]);
    }
    return 0;
}


相关文章
|
6月前
|
缓存 网络协议 算法
【Linux系统编程】深入剖析:四大IO模型机制与应用(阻塞、非阻塞、多路复用、信号驱动IO 全解读)
在Linux环境下,主要存在四种IO模型,它们分别是阻塞IO(Blocking IO)、非阻塞IO(Non-blocking IO)、IO多路复用(I/O Multiplexing)和异步IO(Asynchronous IO)。下面我将逐一介绍这些模型的定义:
312 2
|
7月前
|
API C# 图形学
【推荐100个unity插件之3】切割unity3d物体插件——Ezy-Slice的使用
【推荐100个unity插件之3】切割unity3d物体插件——Ezy-Slice的使用
256 0
|
安全 Java
什么是Java泛型?主要应用场景有哪些?
什么是Java泛型?主要应用场景有哪些?
225 0
|
7月前
|
云计算
新手开单指南
新云大使?不知道推广什么产品?无法推广开出第一单? 该文讲解新手开单指南,帮助新手大使推广成单,从0到1助力小白云大使轻松上手赚的第一桶金。
新手开单指南
|
传感器 Web App开发 JavaScript
前端(六)——TypeScript在前端中的重要性与应用
前端(六)——TypeScript在前端中的重要性与应用
181 0
|
8月前
|
机器人 程序员 C++
Scratch3.0——助力新进程序员理解程序(十二、画笔)
Scratch3.0——助力新进程序员理解程序(十二、画笔)
85 0
|
弹性计算 容灾 安全
阿里云服务器ECS配置全攻略,这么选就对了!
阿里云服务器ECS配置全攻略,这么选就对了!2023阿里云服务器选购流程更新,选购云服务器有两个入口,一个是选择活动机,只需要选择云服务器地域、系统、带宽即可;另一个是在云服务器页面,自定义选择云服务器配置,这种方式购买云服务器较为复杂,需要选付费方式、地域及可用区、ECS实例规格、镜像、网络、公网IP、安全组等配置,阿里云百科来阿里云服务器购买流程指南2023新版教程:
566 0
|
Web App开发 Java 开发工具
|
XML 搜索推荐 定位技术
2023年最后欢迎的WordPress SEO 插件——All in One SEO Pack
2023年最后欢迎的WordPress SEO 插件——All in One SEO Pack All in One SEO Pack 这个名字说明了一切;这是一个All in One SEO Pack插件。它拥有超过 200 万的活跃安装量和超过 1,100 条五星级评论。
2023年最后欢迎的WordPress SEO 插件——All in One SEO Pack
|
缓存 JavaScript 前端开发
Vite 原理浅析
Vite 原理浅析
1084 0