题目来源:http://poj.org/problem?id=1028

题目大意:

  模拟实现一个浏览器的“前进”和“回退”功能。由一个forward stack和一个backward stack实现。

  打开浏览器时的正位于http://www.acm.org/。然后浏览器会接受下面四种命令:

  BACK:将当前页面压入forward stack,将backward stack顶部页面弹出,成为当前页面。若当前backward stack为空,忽略该命令;

  FORWARD:将当前页面压入backward stack,将forward stack顶部的页面弹出,作为当前页面。若当前forward stack为空,忽略该命令;

  VISIT:将当前页面压入backward stack,将指定的URL作为当前页面;

  QUIT:退出浏览器。

输入:命令的序列,以QUIT作为结束。

输出:如果当前页面发生了改变,输出改变后的当前页面,如果命令被忽略,输出“Ignored.”


Sample Input

VISIT http://acm.ashland.edu/
VISIT http://acm.baylor.edu/acmicpc/
BACK
BACK
BACK
FORWARD
VISIT http://www.ibm.com/
BACK
BACK
FORWARD
FORWARD
FORWARD
QUIT

Sample Output

http://acm.ashland.edu/
http://acm.baylor.edu/acmicpc/
http://acm.ashland.edu/
http://www.acm.org/
Ignored
http://acm.ashland.edu/
http://www.ibm.com/
http://acm.ashland.edu/
http://www.acm.org/
http://acm.ashland.edu/
http://www.ibm.com/
Ignored

题干已经把如何实现讲解得很清楚,照着写就可以了,要是不给提示,这倒会是道很有意思的题。

 //////////////////////////////////////////////////////////////////////////
// POJ1028 Web Navigation
// Memory: 264K Time: 47MS
// Language: C++ Result: Accepted
////////////////////////////////////////////////////////////////////////// #include <iostream>
#include <string>
#include <stack> using namespace std; stack<string> forwardStack;
stack<string> backwardStack; void clearForwardStack() {
while (!forwardStack.empty()) {
forwardStack.pop();
}
} int main() {
string operation;
string currentURL = "http://www.acm.org/";
string nextURL;
while (cin >> operation && operation != "QUIT") { switch (operation[]) {
case 'V':
cin >> nextURL;
backwardStack.push(currentURL);
currentURL = nextURL;
cout << currentURL << endl;
clearForwardStack();
break;
case 'B':
if (backwardStack.empty()) {
cout << "Ignored" << endl;
} else {
forwardStack.push(currentURL);
currentURL = backwardStack.top();
cout << currentURL << endl;
backwardStack.pop();
}
break;
case 'F':
if (forwardStack.empty()) {
cout << "Ignored" << endl;
} else {
backwardStack.push(currentURL);
currentURL = forwardStack.top();
cout << currentURL << endl;
forwardStack.pop();
}
break;
}
}
system("pause");
return ;
}

最新文章

  1. C++11的简单线程池代码阅读
  2. PostgreSQL-系统表、系统视图
  3. webpack入坑之旅(六)配合vue-router实现SPA
  4. select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
  5. TCP UDP 协议的区别和联系
  6. MySQL 获得当前日期时间 函数
  7. 【Xamarin挖墙脚系列:学习资料大放送】
  8. Android Studio无法关联Api23源码-提示Souces for android api 23 platform not found
  9. asp.net打印网页后自动关闭网页【无需插件】
  10. bzoj 2004: [Hnoi2010]Bus 公交线路
  11. SpringMvc 请求中日期类型参数接收一二事儿
  12. java 大文件分割与组装
  13. Vulcan 基于Meteor的APollO框架 , grapesjs 用于可视化生成Html 页面
  14. spark.yarn.jar和spark.yarn.archive的使用
  15. 2.Early Education of Children 儿童的早期教育
  16. iOS-QQ临时对话、QQ群申请跳转
  17. 一个将PDF转word、图片、PPT的在线工具
  18. Asp.net Core Startup Class中是如何获取配置信息的
  19. 转 Java对日期Date类进行加减运算一二三
  20. vim 对齐线

热门文章

  1. 2017-2018-1 20179203 《Linux内核原理与分析》第六周作业
  2. NYOJ-求逆序数 ----------------待解决,WA
  3. 使用UIBezierPath添加投影效果
  4. windows拾遗
  5. 洛谷【P1619】 解一元二次方程的烦恼
  6. VS2008中_T的作用
  7. Python之常用模块(二)
  8. java验证,”支持6-20个字母、数字、下划线或减号,以字母开头“这个的正则表达式怎么写?
  9. 用JSP输出Hello World
  10. TCP/IP四层体系结构