zoukankan      html  css  js  c++  java
  • 网页导航

    【题目描述】

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

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

    (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;
    }
  • 相关阅读:
    AI工程师职业规划和学习路线完整版
    Python基础面试题库
    Python运行的17个时新手常见错误小结
    一文总结学习 Python 的 14 张思维导图
    NLP大赛冠军总结:300万知乎多标签文本分类任务(附深度学习源码)
    超过 150 个最佳机器学习,NLP 和 Python教程
    任泽平:95页PPT分析2018(经济、房价、政策)
    为什么量化交易中稳定盈利是第一要义
    使用tushare获取股票实时分笔数据延时有多大
    5行代码实现1秒内获取一次所有股票的实时分笔数据
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5929085.html
Copyright © 2011-2022 走看看