• poj 1028 Web Navigation 【模拟题】


    题目地址:http://poj.org/problem?id=1028

    测试样例:

    Sample Input

    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

    Sample Output

    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

    题目分析:
    指令操作:

    需要支持如下命令:

    BACK:把当前页面放入“前进栈”的最顶部,并从“后退栈”中取出顶部元素,使其为当前浏览页面。如果“后退栈”为空,则忽略当前操作。

    FORWARD:把当前页面放入“后退栈”的最顶部,并从“前进栈”中取出顶部元素,使其为当前浏览页面。如果“前进栈”为空,则忽略当前操作。

    VISIT :将当前页面放入后退栈的顶部,并设置URL为当前指定页面。前进栈设置为空。

    QUIT:退出浏览器。

    假设浏览器初始登入URL网页:http://www.acm.org/

    注意:当你BACK 或者 FORWARD 的时候,如果要转换的页面不存在,需要输出Ignored 的时候,不要把当前的页面加入 前进栈 或者 后退栈。

    除非要转换的页面存在,才将当前的页面 加入前进栈或者后退栈。

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <math.h>
    #include <stack>
    #include <queue>
    #include <iostream>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
        stack<string>s_back; //后退栈
        stack<string>s_forw; //前进栈
    
        //假设浏览器初始登入URL网页:http://www.acm.org/
        string instruct; //操作指令
        string cur="http://www.acm.org/";//当前开始页面
        string temp;
    
        while(cin>>instruct )
        {
            if(instruct=="QUIT") break;
            if(instruct=="VISIT") //执行此指令后要将当前页面加入后退栈
            { //遇到访问新的页面  //并且前进栈要清空
                cin>>temp;
                s_back.push(cur); //加入后退栈
                cur=temp;
                cout<<cur<<endl;
                while(!s_forw.empty()) s_forw.pop();
            }
            if(instruct=="BACK")
            {
                if(!s_back.empty()){
                    s_forw.push(cur);//将当前页面加入前进栈 注意:要包含在if语句内 否则会错
                    cur=s_back.top(); s_back.pop();//不要忘记出栈
                    cout<<cur<<endl;
                }
                else printf("Ignored
    ");
            }
            if(instruct=="FORWARD")
            {
                if(!s_forw.empty()){
                    s_back.push(cur); // 注意:要包含在if语句内 否则会错
                    cur=s_forw.top(); s_forw.pop();
                    cout<<cur<<endl;
                }
                else printf("Ignored
    ");
            }
        }
        return 0;
    }
    
    
    
  • 相关阅读:
    跟着Artech学习WCF(3) wcf 的状态问题
    ASP.NETmvc常用JQUERY收藏【jquery.form.js结合jquery.validate.js】
    ASP.NET开源MVC框架Vici MVC(二)Controllers和templates基础
    vici 开源asp.net mvc支持asp.net2.0II6.0下部署 实例下载地址
    asp.net MVC iis6 虚拟主机兼容开发方式
    ASP.NET mvc 自定义验证和Filter过滤器传参
    跟着Artech学习WCF(1)
    xslt转换XML为HTML遇到JS,CSS等问题
    跟着Artech学习WCF(4) MSMQ 绑定
    跟着Artech学习WCF(1)
  • 原文地址:https://www.cnblogs.com/yspworld/p/4665529.html
Copyright © 2020-2023  润新知