您的位置:首页 > 其它

SDUT 2088 refresh的停车场

2016-07-20 18:20 453 查看
点击打开题目链接



#include <bits/stdc++.h>
using namespace std;

string _stack[200100], _queue[200100];

int main()
{

int n, m;
string str, num;
while(cin >> n >> m)
{
int flag = 1, top = 0, _front = 0, _rear = 0;
for(int i = 1; i <= m; i++)
{
cin >> str;
if(str == "Add")
{
cin >> num;
if(top < n)
{
_stack[++top] = num;
}
else
{
_queue[++_rear] = num;
}
}
else if(str == "Del")
{
if(top <= 0)
{
flag = 0;
}
else if(_front <= _rear)
{
_stack[top] = _queue[++_front];
}
else if(_front > _rear)
{
top --;
}
}
else if(str == "Out")
{
if(_front <= _rear)
{
_front++;
}
else
{
flag = 0;
}
}
}
if(flag == 0)
{
cout << "Error" << endl;
}
else
{
while(top)
{
cout << _stack[top--] << endl;
}
}
}
return 0;
}

2:
#include <bits/stdc++.h>
using namespace std;

int main()
{

    int n, m;
    int flag;
    char str[10];
    string str1;
    while(cin >> n >> m)
    {
        queue<string>Q;
        stack<string>S;
        flag = 1;
        while(m --)
        {
            scanf("%s", str);
            if(strcmp(str, "Add") == 0)
            {
                cin >> str1;
                if(S.size() == n)
                {
                    Q.push(str1);
                }
                else
                {
                    S.push(str1);
                }

            }
            else if(strcmp(str, "Del") == 0)
            {
                if(S.empty())
                {
                    flag = 0;
                }
                else
                {
                    S.pop();
                    if(!Q.empty())
                    {
                        S.push(Q.front());
                        Q.pop();
                    }
                }
            }
            else if(strcmp(str, "Out") == 0)
            {
                if (!Q.empty())
                {
                    Q.pop();
                }
                else
                {
                    flag = 0;
                }
            }

        }
        if(flag == 0)
        {
            cout << "Error" << endl;
        }
        else
        while(!S.empty())
        {
            cout << S.top() << endl;
            S.pop();
        }
    }
    return 0;
}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  队列