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;
    }
  • 相关阅读:
    SQL语句汇总——数据修改、数据查询
    Spring AOP详解
    action类中属性驱动和模型驱动的区别
    数组指针的用法,用处。
    C,C++回文字符串判断(字符串指针的用法)
    C,C++容易被忽略的问题
    c,c++函数返回多个值的方法
    adsf
    Establishing a Build Environmen
    Setting up a Mac OS build environment
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5929085.html
Copyright © 2011-2022 走看看