poj1028_Web Navigation

来源:互联网 发布:制作拜年视频软件 编辑:程序博客网 时间:2024/05/18 02:48

题目详情

思路:题目提示要用两个栈,一个backword回退栈,一个forward向前栈,再定义一个变量表示当前网址就可以了。自己开始做的时候有一个点没有注意,就是在back和forward时先把当前网址入栈,再跳转显示结果网址,然后发现结果不对,想一想,发现了原因,因为如果连续back(forward)一直到栈空,会把栈底网址push进forward(back)栈,然后如果执行forward(back)的话,不会跳转到当前网址的下一个,而是依旧显示当前网址,因为forward(back)的栈顶元素是当前网址。

#include<iostream>#include<stack>#include<string>#include<algorithm>using namespace std;int main(){stack<string> backward,forward;string type;string currenturl;cin>>type;currenturl="http://www.acm.org/";//当前显示的网址while(type!="QUIT"){if(type=="VISIT")//前往新网址{backward.push(currenturl);//把前一个网址入栈cin>>currenturl;cout<<currenturl<<endl;while(!forward.empty()){forward.pop();}}else if(type=="BACK")//回退上一个网址{if(!backward.empty()){forward.push(currenturl);//把前一个网址入栈currenturl=backward.top();backward.pop();cout<<currenturl<<endl;}elsecout<<"Ignored"<<endl;}else if(type=="FORWARD")//前往后一个网址{if(!forward.empty()){backward.push(currenturl);//把前一个网址入栈currenturl=forward.top();forward.pop();cout<<currenturl<<endl;}elsecout<<"Ignored"<<endl;}}return 0;}


0 0
原创粉丝点击