zoukankan      html  css  js  c++  java
  • 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;
    }
    
    
    
  • 相关阅读:
    Responder一点也不神秘————iOS用户响应者链完全剖析
    loadView、viewDidLoad及viewDidUnload的关系
    iOS 离屏渲染的研究
    CoreData处理海量数据
    《驾驭Core Data》
    为什么都要在主线程中更新UI
    快速排序OC实现和快排思想找第n大的数(原创)
    最新版SDWebImage的使用
    UIViewContentMode各类型效果
    iOS 8 自适应 Cell
  • 原文地址:https://www.cnblogs.com/yspworld/p/4665529.html
Copyright © 2011-2022 走看看