原题链接

题目大意:模拟一个浏览器,打开一个网页、后退或者前进,输出网址。

解法:用两个堆栈分别表示后退保存的网页和前进保存的网页。初始化时把当前页面压入后退堆栈的栈顶。要注意几点,一个是每次记得要清空两个堆栈,另一个,如果后退之后又打开了新的网页,前进的堆栈要清空,这和真实的浏览器的结果是一致的。

参考代码:

#include<iostream>
#include<string>
#include<stack> using namespace std; stack<string> back;
stack<string> forw; int main(){
int n;
cin>>n;
while(n--){
string cmd,url="http://www.acm.org/";
while(!back.empty())
back.pop();
while(!forw.empty())
forw.pop();
back.push(url); while(1){
cin>>cmd;
if(cmd=="QUIT")break;
if(cmd=="VISIT"){
cin>>url;
back.push(url);
cout<<url<<endl;
while(!forw.empty()) //visit new website, empty the forward stack
forw.pop();
}
if(cmd=="BACK"){
if(back.size()==1) //top url is the current
cout<<"Ignored"<<endl;
else{
forw.push(url);
back.pop();
url=back.top();
cout<<url<<endl;
}
}
if(cmd=="FORWARD"){
if(forw.empty())
cout<<"Ignored"<<endl;
else{
url=forw.top();
forw.pop();
back.push(url);
cout<<url<<endl;
}
}
}
if(n>0)
cout<<endl; } return 0;
}

最新文章

  1. Web 开发基础
  2. flexbox简介
  3. Spring框架之AOP
  4. django是怎么处理请求的
  5. Javascript 多物体运动——逐行分析代码,让你轻松了解运动的原理
  6. CodeForces 235C Cyclical Quest(后缀自动机)
  7. sql基础篇
  8. mysql 本地操作
  9. 80、Flask用法简析
  10. codeforces#1136 C. Nastya Is Transposing Matrices(找规律)
  11. PAT 1069 The Black Hole of Numbers
  12. oracle批量更新之使用游标进行分批次更新的5种方式及速度比对
  13. break continue练习
  14. Python3 Selenium WebDriver网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作
  15. myEclipse 下配置多个Tomcat
  16. MDI QMdiArea 多文档区域
  17. python json.dumps输出中文问题
  18. 【贪心+优先队列】POJ3190-Stall Reservations
  19. 算法笔记_051:荷兰国旗问题(Java)
  20. 重写(Override)

热门文章

  1. 解决visualsvn监听ip 错误的问题
  2. HDU 3076 ssworld VS DDD 概率dp,无穷级数,oj错误题目 难度:2
  3. 二模 (5)day1
  4. ASP.NET MVC 基于角色的权限控制系统的示例教程
  5. 关于HashMap中的负载因子
  6. 2799元的HTC One时尚版要卖疯了
  7. FineUI疑难杂症
  8. RFID Hacking③:使用ProxMark3嗅探银行闪付卡信息
  9. Mifare Classic Tool(MCT)汉化版
  10. 文件操作I