zoukankan      html  css  js  c++  java
  • 希望

    【题目描述】

    网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,“前进栈”、“后退栈”。

    这里你需要实现以下几个功能:

    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

    QUITP

    【样例输出】

    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。

    思路:模拟

    代码实现:

     1 #include<cstdio>
     2 #include<cstring>
     3 int ls,rs,lt,rt;
     4 char now[600]="http://www.acm.org/";
     5 char left[110][600],right[110][600];
     6 char ch[600];
     7 int main(){
     8     freopen("kami.in","r",stdin);
     9     freopen("kami.out","w",stdout);
    10     while(scanf("%s",ch)){
    11         if(ch[0]=='Q') return 0;
    12         if(ch[0]=='B'){
    13             if(!lt) puts("Ignored");
    14             else{
    15                 for(int i=0;now[i]||right[rt][i];i++) right[rt][i]=now[i];
    16                 rt++,lt--;
    17                 for(int i=0;now[i]||left[lt][i];i++) now[i]=left[lt][i];
    18                 puts(now);
    19             }
    20         }
    21         if(ch[0]=='F'){
    22             if(!rt) puts("Ignored");
    23             else{
    24                 for(int i=0;now[i]||left[lt][i];i++) left[lt][i]=now[i];
    25                 lt++,rt--;
    26                 for(int i=0;now[i]||right[rt][i];i++) now[i]=right[rt][i];
    27                 puts(now);
    28             }
    29         }
    30         if(ch[0]=='V'){
    31             scanf("%s",ch);
    32             for(int i=0;now[i]||left[lt][i];i++) left[lt][i]=now[i];
    33             lt++,rt=0;
    34             for(int i=0;now[i]||ch[i];i++) now[i]=ch[i];
    35             puts(now);
    36         }
    37     }
    38 }

    我开始明白名字的恶意了。

    题目来源:zhx

  • 相关阅读:
    抽象类abstract
    final关键字特点
    继承ExtendsFour
    继承(继承中构造方法的关系)
    继承ExtendsTwo-super&this
    继承ExtendsOne
    静态
    构造方法与setXxx方法
    15.8
    15.7
  • 原文地址:https://www.cnblogs.com/J-william/p/6669185.html
Copyright © 2011-2022 走看看