day8——双向队列

双向队列

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic Discuss

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

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int e1 = 10050, e2 = 10050;
char a[100];
int num[100010], flag[100010];

int main(void)
{
    int m, i, b, j = 0, t;

    scanf("%d", &m);
    for(i = 1; i <= m; i++)
    {
        scanf("%s", a);//利用scanf的特点,遇到空格就停止,数字可以接下来继续输入
        if(strcmp(a, "LIN") == 0)
        {
            scanf("%d", &b);
            num[e1--] = b;
        }

        else if(strcmp(a, "RIN") == 0)
        {
            scanf("%d", &b);
            num[++e2] = b;
        }

        else if(strcmp(a, "ROUT") == 0)
        {
            if(e1 >= e2)
            {
                flag[j++] = i;
                e1 = 10050;
                e2 = 10050;
            }

            else
            {
                e2--;
            }
        }

        else
        {
            if(strcmp(a, "LOUT") == 0)
            {
                if(e1 >= e2)   //仔细想想这个地方,就能相通
                {
                    flag[j++] = i;
                    e1 = 10050;
                    e2 = 10050;
                }

                else
                {
                    e1++;
                }
            }
        }


    }

    if(e1 < e2)
    {
        for(i = e1 + 1; i <= e2; i++)
        {
            if(i == e2)
            {
                printf("%d\n", num[i]);
            }

            else
            {
                printf("%d ", num[i]);
            }
        }
    }

   

    for(t = 0; t < j; t++)
    {
        printf("%d ERROR\n", flag[t]);
    }

    return 0;
}
 

猜你喜欢

转载自blog.csdn.net/Eider1998/article/details/82054183