poj_1028

来源:互联网 发布:c语言pthread 编辑:程序博客网 时间:2024/06/06 18:46

题意:  给你一些命令来处理网页,有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;

}


0 0