题目链接:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1035
题目就是一道STL,只不过是模拟浏览器的前进和后退。就这一点点差别、、、、、
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
stack<string> back;
stack<string> forward;
int count;
cin>>count;
string str;
string keywards;
while(count--)
{
str="http://www.acm.org/"; //初始话一定要在while(count--)这个循环里面,要不然是错的,这块一定要注意、、、
//刚开始的时候一定要清空栈和队列,要不然是错误的。这块一定要注意。
while(!back.empty())
back.pop();
while(!forward.empty())
forward.pop();
while(cin>>keywards)
{
if(keywards=="QUIT")
break;
else if(keywards=="VISIT")
{
while(!forward.empty())
forward.pop();
back.push(str); //先把 http://www.acm.org/放入栈底,然后再放其他元素。
cin>>str;
cout<<str<<endl;
}
else if(keywards=="BACK")
{
if(back.empty())
{
cout<<"Ignored"<<endl;
}
else
{
forward.push(str);
str=back.top();
back.pop(); //pop()一次只能出去栈里面的一个元素
cout<<str<<endl; //刚开的时候输出栈顶元素、、、
}
}
else
{
if(forward.empty())
{
cout<<"Ignored"<<endl;
}
else
{
back.push(str);
str=forward.top();
forward.pop(); //pop()一次只能出去栈里面的一个元素
cout<<str<<endl;
}
}
}
if(count) //控制格式的。
cout<<endl;
}
return 0;
}