首页 > 其他分享 ><Web Navigation> stack-POJ1028

<Web Navigation> stack-POJ1028

时间:2023-01-29 13:46:12浏览次数:51  
标签:POJ1028 http acm stack command edu page

Web Navigation

Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 41995   Accepted: 18687

Description

Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features is to use two stacks to keep track of the pages that can be reached by moving backward and forward. In this problem, you are asked to implement this.
The following commands need to be supported:
BACK: Push the current page on the top of the forward stack. Pop the page from the top of the backward stack, making it the new current page. If the backward stack is empty, the command is ignored.
FORWARD: Push the current page on the top of the backward stack. Pop the page from the top of the forward stack, making it the new current page. If the forward stack is empty, the command is ignored.
VISIT : Push the current page on the top of the backward stack, and make the URL specified the new current page. The forward stack is emptied.
QUIT: Quit the browser.
Assume that the browser initially loads the web page at the URL http://www.acm.org/

Input

Input is a sequence of commands. The command keywords BACK, FORWARD, VISIT, and QUIT are all in uppercase. URLs have no whitespace and have at most 70 characters. You may assume that no problem instance requires more than 100 elements in each stack at any time. The end of input is indicated by the QUIT command.

Output

For each command other than QUIT, print the URL of the current page after the command is executed if the command is not ignored. Otherwise, print "Ignored". The output for each command should be printed on its own line. No output is produced for the QUIT command.

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
#include<iostream>
#include<string>
#include<stack>
using namespace std;
//POJ1028
//实现网页浏览网站的访问手段

int main(){
    string web="http://www.acm.org/";
    string instructor;
    stack <string> s,a;
    string temp;

    s.push(web);
    while(cin>>instructor){

        if(instructor=="QUIT"){
            return 0;
        }


        if(instructor=="VISIT"){

            while(!a.empty()){
                a.pop();
            }

            cin>>web;
            s.push(web);
            cout<<web<<endl;
        }

        if(instructor=="BACK"){
            if(!s.empty()){
                a.push(s.top());
                s.pop();
                if(!s.empty()){
                    cout<<s.top()<<endl;
                }
                else{
                    cout<<"Ignored"<<endl;

                    //请回当前页面
                    s.push(a.top());
                    a.pop();

                }

            }

        }



        //若是模仿现在的网页浏览,在visit一个新的网页之后,是没有前进项的,保证的是一种单进程
        //但若是stack a一直存在,则相当于visit功能是在原有进程中插入进程,并且插入进程拥有前进项
        //因此在visit中,每次visit都会使得a栈清零则贴近日常使用
        //forward只能是相对于backword而言的
        if(instructor=="FORWARD"){

                if(!a.empty()){
                    s.push(a.top());
                    a.pop();
                    cout<<s.top()<<endl;

                }
                else{
                    cout<<"Ignored"<<endl;
                }


        }




    }

}

 

标签:POJ1028,http,acm,stack,command,edu,page
From: https://www.cnblogs.com/walter-mitty/p/17072474.html

相关文章

  • 追core笔记之五:如何查看一个corrupt stack的core
    接触c以来有很多好奇的问题,其中一类是关于栈的。比如:栈上存储了哪些数据?函数参数怎么传递的?返回值怎么传出去的?从一个函数是怎么跳转到另外一个函数的?为何gdb可以看到函数......
  • openstacksdk快速上手
    hello,大家好,这里是费冰,今天是大年初六,唉,这么早就被迫营业了。那么今天来解读一波openstacksdk。Openstacksdk是什么其实我很难说明一个是什么的问题。如果你使用过pytho......
  • OpenStack云平台搭建
    参考:https://blog.csdn.net/m0_45692110/article/details/122628664https://huaweicloud.csdn.net/635607c3d3efff3090b58eb4.html一、虚拟机准备controller和compute虚拟......
  • Openstack Horizon and Django Compare the Working of authentication (Login)
    ​​http://fosshelp.blogspot.com/2014/01/openstack-horizon-and-django-compare.html​​copy:Workingofauthentication(Login)indjango===========================......
  • 解决stackoverflow无法正常使用的问题
    访问StackOverflow时顶部有报错StackOverflow的官网在国内可以正常访问,但是网站使用的jquery是引用自google域名的,由于众所周知的原因,google域名提供的资源是无法访问的,所......
  • Openstack-创建实例错误
    创建实例错误实例执行所请求操作失败,实例处于错误状态。:请稍后再试[错误:Buildofinstancebeaeb5e0-26eb-4044-ae14-bb87d509886daborted:Failedtoallocateth......
  • Openstack-删除卷:您被禁止执行 删除卷 (僵尸卷)
    您被禁止执行删除卷(僵尸卷)您被禁止执行删除卷:7f23a26a-27f2-4504-9191-0f5630a5bff5,卷一直在创建,但实例已经被删除了[root@controller~]#mysql-uroot-p000......
  • Openstack-dashboard默认配额
    创建实例不超过10个方法一修改配置文件在使用openstack的过程中,默认创建的实例最多10个,这是因为配额默认实例就是10所以我们需要修改配置文件/etc/nova/nova.conf中......
  • 【SpringApplication】源码之【StackWalker】
     问题:SpringBoot是如何找到main方法的启动类的?  我们在SpringApplication275行看到有一个“探测Main”的方法,其中他使用了Java9的新特性:StackWalker。图1StackW......
  • OpenStack命令行参考
    OpenStack命令行参考hello,大家好,这里是费冰。在使用OpenStack的过程中,固然我们可以通过web页面完成绝大多数的操作,但作为管理人员,不能不知晓OpenStack命令行的有关知......