题目大意:网络导航?
标准的web浏览器包含向前和向后浏览最近的页面的特性,有一个方法来实现这些用两个栈来跟踪页面达到向前和向后的移动,在这个问题里面,你被要求实现这些。
以下命令需要支持:
BACK:把当前页面放进前面的栈的最顶部,删除这个页面在后面的栈,使其成为新的当前页面,如果后面的栈是空格,命令被忽略;
FORWARD:跟上面的相反 ;
VISIT:把当前页面放在后面栈的顶部,并使URL指定新的页面,前面的栈是清空。
QUIT:退出浏览器。
假设浏览器最初加载的页面是URL http://www.acm.org/
倒是个练习栈的好题目
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
string Now="http://www.acm.org/";
string Back="BACK", Forwed="FORWARD",Visit="VISIT", Op;
stack<string>FRWRD, BCK;
while(cin >> Op, Op != "QUIT")
{
if(Op == Visit)
{
BCK.push(Now);
cin >> Now;
while(FRWRD.size())
FRWRD.pop();
}
else if(Op == Forwed)
{
if(FRWRD.size() == 0)
{
cout << "Ignored" <<endl;
continue;
}
else
{
BCK.push(Now);
Now = FRWRD.top();
FRWRD.pop();
}
}
else
{
if(BCK.size() == 0)
{
cout << "Ignored" <<endl;
continue;
}
else
{
FRWRD.push(Now);
Now = BCK.top();
BCK.pop();
}
}
cout << Now <<endl;
}
return 0;
#include<string>
#include<stack>
using namespace std;
int main()
{
string Now="http://www.acm.org/";
string Back="BACK", Forwed="FORWARD",Visit="VISIT", Op;
stack<string>FRWRD, BCK;
while(cin >> Op, Op != "QUIT")
{
if(Op == Visit)
{
BCK.push(Now);
cin >> Now;
while(FRWRD.size())
FRWRD.pop();
}
else if(Op == Forwed)
{
if(FRWRD.size() == 0)
{
cout << "Ignored" <<endl;
continue;
}
else
{
BCK.push(Now);
Now = FRWRD.top();
FRWRD.pop();
}
}
else
{
if(BCK.size() == 0)
{
cout << "Ignored" <<endl;
continue;
}
else
{
FRWRD.push(Now);
Now = BCK.top();
BCK.pop();
}
}
cout << Now <<endl;
}
return 0;
}