题目来源: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 ;
}

POJ1028 Web Navigation的更多相关文章

  1. POJ-1028 Web Navigation 和TOJ 1196. Web Navigation

    Standard web browsers contain features to move backward and forward among the pages recently visited ...

  2. [POJ1028]Web Navigation(栈)

    这题是01年East Central North的A题,目测是签到题 Description Standard web browsers contain features to move backwa ...

  3. poj 1028 Web Navigation

    Web Navigation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31088   Accepted: 13933 ...

  4. POJ 1028:Web Navigation

    Web Navigation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 30828   Accepted: 13821 ...

  5. Web Navigation

    Description Standard web browsers contain features to move backward and forward among the pages rece ...

  6. poj 1028 Web Navigation(模拟)

    题目链接:http://poj.org/problem? id=1028 Description Standard web browsers contain features to move back ...

  7. poj 1208 Web Navigation(堆栈操作)

    一.Description Standard web browsers contain features to move backward and forward among the pages re ...

  8. ZOJ 1061 Web Navigation

    原题链接 题目大意:模拟一个浏览器,打开一个网页.后退或者前进,输出网址. 解法:用两个堆栈分别表示后退保存的网页和前进保存的网页.初始化时把当前页面压入后退堆栈的栈顶.要注意几点,一个是每次记得要清 ...

  9. POJ 1028 Web Navigation 题解

    考查代码能力的题目.也能够说是算法水题,呵呵. 推荐新手练习代码能力. 要添加难度就使用纯C实现一下stack,那么就有点难度了,能够使用数组模拟环形栈.做多了,我就直接使用STL了. #includ ...

随机推荐

  1. 【遍历二叉树】11把二叉树转换成前序遍历的链表【Flatten Binary Tree to Linked List】

    本质上是二叉树的root->right->left遍历. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  2. 用Rem来无脑还原Web移动端自适应的页面

    (function (win,doc){ if (!win.addEventListener) return; var html=document.documentElement; function ...

  3. shader学习推荐

    <DirectX 9.0 3D游戏开发编程基础> 当您理解了如何实现顶点着色器和像素着色器之后,接下来您可能想进一步了解使用这两种着色器能够实现哪些效果. 最好的方式就是研究一下现有的各种 ...

  4. 使用Visual Studio进行单元测试-Shim类中无法找到参数包含CancellationTokenSource的方法

    Shim类中无法找到参数包含CancellationTokenSource的方法,这句话有点绕口,看例子. 一.代码 public class CancellationDemo { public in ...

  5. navicat导入sql文件

    Hello,大家好.Navicat是我们平时使用较多的一个数据库客户端工具,平时小天我主要是用来连接mysql的,使用的时候还是很方便的. 今天小天我就给大家分享一个Navicat如何导入导出sql文 ...

  6. JS---改变图片大小

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. Uva 213

    1. 问题 第一次发现新的存储方式,int code[8][1<<8]; 用于存储二进制的形式 将字符以是十进制的方式存储到数组中 如何消除 \n \r 的影响,进行多行的输入 2. 代码 ...

  8. 2.JasperReports学习笔记2-创建简单的报表例子

    转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html 一.创建简单的jrxml文件 这里可以手动创建jrxml文件,也可以使用 ...

  9. linux命令-vim命令模式

    编辑模式下 按 “esc” 进去命令模式 :wq 保存并退出 :w  保存 已写入 :q!不保存强制退出 :wq! 强制保存退出 :set nu 显示行号 :set nonu 去掉行号 :nohl 取 ...

  10. CentOS7下yum方式安装mysql5.6

    在Centos7中用MariaDB代替了mysql数据库.所以在新安装MySQL前必须做好对系统的清理工作. 一.清理CentOS7下的MariaDB. [root@localhost ~]#rpm ...