浏览器(Web Navigation) codevs 5373 POJ 1028 简单模拟

这是一道水题,没错,我就是加上来文章数量的

【题目描述】 网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈, “前进栈”、“后退栈”。 这里你需要实现以下几个功能: BACK: 如果“后退栈”为空则忽略此命令。否则将当前两面压入“前进栈”, 从“后退栈”中取出栈顶页面,并设置为当前页面。 FORWARD: 如果“前进栈”为空则忽略此命令。否则将当前两面压入“后 退栈”,从“前进栈”中取出栈顶页面,并设置为当前页面。 VISIT: 将当前页面压入“后退栈”、并将当前页面置为指定页面,并将“前 进栈”置空。 QUIT: 退出。 假设此浏览器初始页面为 http://www.acm.org/

【输入格式】 输入为一系列命令:BACK, FORWARD, VISIT 和 QUIT,页面网址为不含空 格的字符串 假设任一时刻任意时刻两个栈中的元素都不会超过 100。 最后一个命令为 QUIT。

【输出格式】 输对于除 QUIT 外所有命令,输出当前页面(网址) 如果该命令被忽略则输出“Ignored”。

【样例输入】 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

【样例输出】 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

【样例解释】 无。

【数据范围与规定】 对于100%的数据,操作数量不超过1000,每行字符串长度不超过500。

string模拟即可,char数组可能会麻烦一些。详见代码

 1 #include<iostream>
 2 #include<cstdio> 
 3 #include<string>
 4 using namespace std;
 5 template<class T> inline void read(T &_a){
 6     bool f=0;int _ch=getchar();_a=0;
 7     while(_ch<'0' || _ch>'9'){if(_ch=='-')f=1;_ch=getchar();}
 8     while(_ch>='0' && _ch<='9'){_a=(_a<<1)+(_a<<3)+_ch-'0';_ch=getchar();}
 9     if(f)_a=-_a;
10 }
11 
12 int h_p,h_n;
13 string s_p[1001],s_n[1001],now="http://www.acm.org/";
14 char op[10];
15 
16 int main()
17 {
18     freopen("kami.in","r",stdin);
19     freopen("kami.out","w",stdout);
20     while(scanf("%s",op+1)==1)
21     {
22         if(op[1]=='Q') break;
23         else if(op[1]=='B')
24         {
25             if(!h_p) { printf("Ignored
"); continue; }
26             s_n[++h_n]=now;
27             now=s_p[h_p--];
28         } else if (op[1]=='F'){
29             if(!h_n) { printf("Ignored
"); continue; }
30             s_p[++h_p]=now;
31             now=s_n[h_n--];
32         } else {
33             s_p[++h_p]=now;
34             cin>>now;
35             h_n=0;
36         }
37         cout<<now<<endl;
38     }
39     return 0;
40 }
View Code
原文地址:https://www.cnblogs.com/jaywang/p/7695212.html