zoj1061 Web Navigation (栈——基础练习)

来源:互联网 发布:数据库语言获取日期 编辑:程序博客网 时间:2024/06/05 18:49

题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=61


题意:模拟网站前进后退的功能。要有俩个栈——一个是back栈,一个是forward栈。

BACK操作:如果(back栈为空) 输出ignore。否则,把当前网页入forward栈,back栈首出栈,打印当前网页;

FORWARD操作:如果(forward栈为空) 输出ignore。否则,把当前网页入back栈,forward栈首出栈,打印当前网页

VISIT操作:把当前网页入back栈。输入一个网页,使之成为当前网页,清空forward栈。打印当前网页

QUIT操作:退出这次操作。


分析:一共T组数据,每俩组数据输出一行空行。理解后会感觉这题挺基础的,下面看代码:


#include<stdio.h>#include<iostream>#include<string>#include<stack>using namespace std;int main(){    int T;    cin >> T;    string cur="http://www.acm.org/",ch,v; //cur表示当前网页,ch,v用于输入    stack<string> b,f;//back、forward栈    while(T--){    while(1){        cin >> ch;//输入命令        if(ch[0]=='Q'){            while(!b.empty())//清空back栈                b.pop();            while(!f.empty())//清空forward栈                f.pop();            cur="http://www.acm.org/";            if(T!=0)  cout << "\n";            break;        }else if(ch[0]=='V'){            cin >> v;            b.push(cur);            cur=v;            while(!f.empty())//清空forward栈                f.pop();            cout << cur <<"\n";        }else if(ch[0]=='B'){            if(b.empty()) {printf("Ignored\n");continue;}            f.push(cur);            cur=b.top();            b.pop();            cout << cur <<"\n";        }else if(ch[0]=='F'){            if(f.empty()) {printf("Ignored\n");continue;}            b.push(cur);            cur=f.top();            f.pop();            cout << cur <<"\n";        }    }    }    return 0;}




0 0
原创粉丝点击