• 网页导航


    【题目描述】

    网页导航拥有后退与前进按钮,一种实现这两个功能的方式是用两个栈:“前进栈”、“后退栈”。

    现需要实现以下几个功能:

    (1)BACK:如果“后退栈”为空则忽略此命令。 否则将当前两面压入“前进栈”,从“后退栈”中取出栈顶页面,并设置为当前页面;

    (2)FORWARD:如果“前进栈”为空则忽略此命令。否则将当前两面压入“后退栈”,从“前进栈”中取出栈顶页面,并设置为当前页面;

    (3)VISIT:将当前页面压入“后退栈”、 并将当前页面置为指定页面, 并将“前进栈”置空;

    (4)QUIT:退出;

    假设初始页面为:http://www.acm.org/。

    【输入描述】

    输入数据包含一系列命令:BACK、FORWARD、VISIT和QUIT,页面网址为不含空格的字符串。

    任一时刻任意时刻两个栈中的元素都不会超过100。

    最后一个命令为QUIT。

    【输出描述】

    对于除QUIT外的所有命令,输出当前网址,如果该命令被忽略则输出“Ignored”。

    【样例输入】

    VISIT http://acm.ashland.edu/

    VISIT http://acm.baylor.edu/acmicpc/

    BACK

    BACK

    BACK

    FORWARD

    VISIT http://www.ibm.com/

    BACK

    BACK

    FORWARD

    FORWARD

    FORWARD

    QUIT

    【样例输出】

    http://acm.ashland.edu/

    http://acm.baylor.edu/acmicpc/

    http://acm.ashland.edu/

    http://www.acm.org/

    Ignored

    http://acm.ashland.edu/

    http://www.ibm.com/

    http://acm.ashland.edu/

    http://www.acm.org/

    http://acm.ashland.edu/

    http://www.ibm.com/

    Ignored

    【数据范围及提示】

    对于100%的数据,操作数量不超过1000,每行字符串长度不超过500。

    源代码:
    
    #include<cstdio>
    #include<iostream>
    #include<stack>
    using namespace std;
    stack <string> Q1,Q2;
    int main() //这是我这辈子见过的最恶心的模拟题。
    {
        Q1.push("http://www.acm.org/");
        string S,T;
        while (cin>>S)
        {
            if (S[0]=='Q')
              break;
            if (S[0]=='V')
            {
                cin>>T;
                cout<<T<<endl;
                Q1.push(T);
                while (!Q2.empty())
                  Q2.pop();
            }
            if (S[0]=='B')
            {
                if (Q1.size()>1)
                {
                    T=Q1.top();
                    Q2.push(T);
                    Q1.pop();
                    cout<<Q1.top()<<endl;
                }
                else
                  cout<<"Ignored"<<endl;
            }
            if (S[0]=='F')
            {
                if (!Q2.empty())
                {
                    T=Q2.top();
                    Q1.push(T);
                    Q2.pop();
                    cout<<T<<endl;
                }
                else
                  cout<<"Ignored"<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    HTTP/2的优先级
    JavaScript 日期权威指南
    岂曰无衣与子同袍
    Android项目中实现native调用
    关键渲染路径
    @ModelAttribute使用详解
    @SessionAttribute使用详解
    @ControllerAdvice 拦截异常并统一处理
    js获取文件MD5值
    Mybatis分页插件PageHelper的配置和使用方法
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5929085.html
Copyright © 2020-2023  润新知