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;
}
Comments NOTHING