poj_1028

题意:  给你一些命令来处理网页,有visit,back,forward,quit。Visit命令就是把当前页压到backward栈中,当前页为visit的网站,并清空forward栈。Back命令是把当前页压到forward栈里,当前页变成backward栈的最上边的网页,并将这个页弹出栈。Forward和back相反,是把当前页压到backward栈里,然后当前页变成forward栈的最上边的网页,并将这个页弹出栈。输出的是执行每条命令的后当前的网页,如果backward或forward栈为空,则输出‘Ingored’。


#include <iostream>

#include <string>


using namespace std;


template<class T>


class stack{

    int Top;

    T s[150];

public:

    stack(){

        Top = -1;

    }

    T top(){

        return s[Top];

    }

    void pop(){

        Top -= 1;

    }

    void push(T a){

        s[++Top] = a;

    }

    bool isampty_back(){

        if (Top <= 0) {

            return true;

        }

        return false;

    }

    bool isampty_forward(){

        if (Top < 0) {

            return true;

        }

        return false;

    }

    void destoery(){

        Top = -1;

    }

};



int  main(){

    string s = "http://www.acm.org/";

    stack<string> preview;

    stack<string> back;

    string ans[150];//当前页

    int i = 0;

    back.push(s);

    

    while (cin>>s) {

        if (s == "QUIT") {

            break;

        }

        else if(s == "VISIT"){

            preview.destoery();

            cin>>s;

            back.push(s);

            ans[i++] = s;

            cout<<ans[i-1]<<endl;

        }

        else if(s == "BACK"){

            if (!back.isampty_back()) {

                preview.push(ans[i-1]);

                back.pop();

                s = back.top();

                ans[i++] = s;

                cout<<ans[i-1]<<endl;

            }

            else{

                ans[i++] = "Ignored";

                cout<<ans[i-1]<<endl;

            }

        }

        else if(s == "FORWARD"){

            if (!preview.isampty_forward()) {

                s = preview.top();

                ans[i++] = s;

                cout<<ans[i-1]<<endl;

                back.push(s);

                preview.pop();

            }

            else{

                ans[i++] = "Ignored";

                cout<<ans[i-1]<<endl;

            }

        }

    }

    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值