#include <iostream>
#include <stack>
#include <string>
#include <vector>
using namespace std;
void ClearStack(stack<string> &s);
string getCurentWeb(const string &cmd);
int main()
{
stack<string> backward,//已经访问的网页
forward; //访问下一个网页
int blocks, i = 0; //接收测试的块数
vector<string> vec;
string originalWeb("http://www.acm.org/");
string curWeb("http://www.acm.org/"); //接收要打开的网页
string cmdBack("BACK");
string cmdForward("FORWARD");
string cmdVISIT("VISIT");
string cmdQuit("QUIT");
string ignored("Ignored");
string cmd;
cin >> blocks;
while (i++ < blocks)
{
getline(cin, cmd);
while (cmd != cmdQuit)
{
//****************处理VISIT COMMAND******************************
if (string::npos != cmd.find(cmdVISIT))//找到
{
backward.push(curWeb); //把当前网页压入后退栈
curWeb = getCurentWeb(cmd);
//cout << "curWeb=" << curWeb << endl;
vec.push_back(curWeb);
ClearStack(forward); //前进栈置空
}//**************************************************************
//****************处理BACK COMMAND*******************************
else if (cmd == cmdBack)
{
if (backward.empty())
{
vec.push_back(ignored);
//cout <<"Ignored" << endl;
}
else if (curWeb != originalWeb)
{
//cout << "入前进栈的是:" << curWeb << endl;
forward.push(curWeb); //把当前网页压入前进栈
curWeb = backward.top(); //取栈顶元素
backward.pop(); //删除栈顶元素
vec.push_back(curWeb);
}
}
//****************处理FORWARD COMMAND****************************
else if (cmd == cmdForward)
{
if (forward.empty())
{
vec.push_back(ignored);
// cout <<"Ignored" << endl;
}
else
{
//cout << "入后退栈的是:" << curWeb << endl;
backward.push(curWeb);
curWeb = forward.top();
forward.pop();
vec.push_back(curWeb);
}
}
//****************处理完毕***************************************
getline(cin, cmd);//接收新的命令
}//结束内层while
//每一组测试完毕,要清空前进和后退栈
ClearStack(backward);
ClearStack(forward);
}//结束外层while
for (vector<string>::iterator it = vec.begin(); it != vec.end(); it++)
{
cout << *it << endl;
}
return 0;
}
//*****************清空栈****************************************************
void ClearStack(stack<string> &s)
{
while (!s.empty())
{
s.pop();
}
}
//*****************获取当前正要访问的网页*********************************
string getCurentWeb(const string &cmd)
{
int len = cmd.size();
string tmp;
for (int i = 6; i < len; i++)
tmp += cmd[i];
//cout << "tmp=" << tmp << endl;
return tmp;
}