POJ-1028 Web Navigation

发布于 2022-11-20  270 次阅读


POJ-1028 Web Navigation

题目大意:使用双栈模拟浏览器的地址缓存,规则如下

  • BACK:将当前页面推送到正向堆栈的顶部。从向后堆栈的顶部弹出页面,使其成为新的当前页面。如果向后堆栈为空,则忽略该命令。
  • FORWARD:将当前页面推到向后堆栈的顶部。从前向堆栈的顶部弹出页面,使其成为新的当前页面。如果转发堆栈为空,则忽略该命令。
  • VISIT:将当前页面推到向后堆栈的顶部,并使指定的URL成为新的当前页面。前向堆栈被清空。
  • QUIT:退出浏览器,结束程序
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<stack>
#include<string.h>
#include<cstring>
using namespace std;
stack<string> WebA;
stack<string> WebB;
int main ()
{
    string Command;
    string url = "http://www.acm.org/";
    while(cin >> Command)
    {
        if(Command == "QUIT")
        {
            break;
        }
        else
        {
            if(Command == "VISIT")
            {
                WebA.push(url);
                while(!WebB.empty())
                {
                    WebB.pop();
                }
                cin >> url;
                cout << url << endl;
            }
            if(Command == "BACK")
            {
                if(WebA.empty())
                {
                    cout << "Ignored" << endl;
                    continue;
                }
                WebB.push(url);
                url = WebA.top();
                WebA.pop();
                cout << url << endl;
            }
            if(Command == "FORWARD")
            {
                if(WebB.empty())
                {
                    cout << "Ignored" << endl;
                    continue;
                }
                WebA.push(url);
                url = WebB.top();
                WebB.pop();
                cout << url << endl;
            }
        }
    }
    return 0;
}