题目大意:网络导航?
标准的web浏览器包含向前和向后浏览最近的页面的特性,有一个方法来实现这些用两个栈来跟踪页面达到向前和向后的移动,在这个问题里面,你被要求实现这些。
以下命令需要支持:
BACK:把当前页面放进前面的栈的最顶部,删除这个页面在后面的栈,使其成为新的当前页面,如果后面的栈是空格,命令被忽略;
FORWARD:跟上面的相反 ;
VISIT:把当前页面放在后面栈的顶部,并使URL指定新的页面,前面的栈是清空。
QUIT:退出浏览器。
假设浏览器最初加载的页面是 URL
倒是个练习栈的好题目
#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;
}