感觉水题一道,偷了个懒,直接用vector来实现栈,将vector的尾端看做栈的顶端,在这里就行pop和push操作。。。push就直接用vector的push_back方法,pop就用vector的back方法,并用erase删除顶端元素。注意:end操作返回的是最后一个元素的下一个位置,所以要减去1。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
vector<string> forwardStack,backwardStack;
int main()
{
string comm;
string curUrl("http://www.acm.org/");
while(comm.compare("QUIT"))
{
cin>>comm;
if(comm.compare("VISIT")==0)
{
backwardStack.push_back(curUrl);
cin>>curUrl;
cout<<curUrl<<endl;
forwardStack.clear();
}
if(comm.compare("BACK")==0)
{
if(backwardStack.empty())
cout<<"Ignored"<<endl;
else
{
forwardStack.push_back(curUrl);
curUrl = backwardStack.back();
backwardStack.erase(backwardStack.end()-1);
cout<<curUrl<<endl;
}
}
if(comm.compare("FORWARD")==0)
{
if(forwardStack.empty())
cout<<"Ignored"<<endl;
else
{
backwardStack.push_back(curUrl);
curUrl = forwardStack.back();
forwardStack.erase(forwardStack.end()-1);
cout<<curUrl<<endl;
}
}
}
return 0;
}