网页浏览
时间限制 : 1000 MS
空间限制 : 65536 KB
问题描述
网页浏览器都包含有前进和后退功能,以此来快速打开之前你访问过的网页。你的任务就是实现这个功能。实现此功能的常用方法是通过forword和back两个栈来保存前进和后退时要打开的网页。下列命令是你需要实现的:
BACK: 把当前显示的网页压入到forword栈中。然后把back栈栈顶的网页弹出作为当前显示的网页。如果back栈为空,那么这条命令就不执行。
FORWARD: 把当前显示的网页压入到back栈中。然后把forward栈栈顶的网页弹出作为当前显示的网页。如果forward栈为空,那么这条命令就不执行。
VISIT : 把当前显示的网页压入到back栈中。然后浏览器显示用户新输入的网址对应的网页。清空forward栈
QUIT: 关闭浏览器假设只要浏览器一打开就会自动打开网页http://www.acm.org/
输入格式
包含若干条命令,这些命令由BACK,FORWARD,VISIT和QUIT构成。每条命令占一行,长度不超过70。命令的总条数不超过100。一旦出现QUIT表示结束输入命令。
输出格式
对于每个命令,如果它不是QUIT,那么输出命令执行后浏览器显示的网页。如果该命令无法执行,则输出 "Ignored",除QUIT命令外,每一个输入命令对应一行输出结果。
样例输入 1
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
样例输出 1
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
样例输入 2
BACK
BACK
VISIT http://www.facebook.com/
FORWARD
FORWARD
BACK
VISIT http://www.163.com/
VISIT http://www.facebook.com/
VISIT http://acm.ashland.edu/
BACK
QUIT
样例输出 2
Ignored
Ignored
http://www.facebook.com/
Ignored
Ignored
http://www.acm.org/
http://www.163.com/
http://www.facebook.com/
http://acm.ashland.edu/
http://www.facebook.com/
思路:
这道题考察的知识点是关于栈的
按照题目的要求一步步操作就行了
1,BACK
把当前显示的网页压入到forword栈中。然后把back栈栈顶的网页弹出作为当前显示的网页。如果back栈为空,那么这条命令就不执行。
if(c == "BACK") { if(back.empty() != 1) { forword.push(i); i = back.top(); back.pop(); a++; ans[a] = i; } else { a++; ans[a] = "Ignored"; } }
2,FORWARD
把当前显示的网页压入到back栈中。然后把forward栈栈顶的网页弹出作为当前显示的网页。如果forward栈为空,那么这条命令就不执行。
if(c == "FORWARD") { if(forword.empty() != 1) { back.push(i); i = forword.top(); forword.pop(); a++; ans[a] = i; } else { a++; ans[a] = "Ignored"; } }
3,VISIT
把当前显示的网页压入到back栈中。然后浏览器显示用户新输入的网址对应的网页。清空forward栈
if(c == "VISIT") { cin>>c; back.push(i); i = c; a++; ans[a] = i; while(forword.empty() != 1) forword.pop(); }
4,QUIT
关闭浏览器
if(c=="QUIT") return 0;
AC代码:
#include <bits/stdc++.h>
using namespace std;
stack<string> back;
stack<string> forword;
string ans[10005];
string c,i = "http://www.acm.org/";
int a = -1;
int main()
{
while(c != "QUIT")
{
cin>>c;
if(c == "VISIT")
{
cin>>c;
back.push(i);
i = c;
a++;
ans[a] = i;
while(forword.empty() != 1)
forword.pop();
}
else if(c == "BACK")
{
if(back.empty() != 1)
{
forword.push(i);
i = back.top();
back.pop();
a++;
ans[a] = i;
}
else
{
a++;
ans[a] = "Ignored";
}
}
else if(c == "FORWARD")
{
if(forword.empty() != 1)
{
back.push(i);
i = forword.top();
forword.pop();
a++;
ans[a] = i;
}
else
{
a++;
ans[a] = "Ignored";
}
}
}
for(int x=0; x<a; x++)
cout<<ans[x]<<endl;
cout<<ans[a];
return 0;
}
The end
最后:创作不易,点个赞和关注再走吧