2011-07-03 23:45
题目地址:http://poj.org/problem?id=1028
=====================================================================================================
#include<iostream>
#include<string>
#include<stack>
using namespace std;
struct URL
{
char s[123];
};
int main()
{
char str[12],curl[123]="http://www.acm.org/";
URL *url;
stack<URL> stab,staf;
while(~scanf("%s",str))
{
if(strcmp(str,"VISIT")==0)
{
url= new URL;
strcpy(url->s,curl);
stab.push(*url); // cout<<stab.top().s<<endl;
while(!staf.empty()) staf.pop();
scanf("%s",curl);
printf("%s\n",curl);
}
else if(strcmp(str,"BACK")==0)
{
if(stab.empty()) { printf("Ignored\n"); continue;}
//cout<<stab.empty()<<endl;
url = new URL;
strcpy(url->s,curl);
staf.push(*url);
url = &stab.top(); //cout<<"aaa:"<<stab.top().s<<endl;
strcpy(curl,url->s); //就因为在这里没考虑到先执行stab.pop();后,会是 url->s的值不是所要的结果!!!!!!!!!!!!!!!!!
stab.pop();
//cout<<"ddd:"<<curl<<endl;
printf("%s\n",curl);
}
else if(strcmp(str,"FORWARD")==0)
{
if(staf.empty()) { printf("Ignored\n"); continue;}
url = new URL;
strcpy(url->s,curl);
stab.push(*url);
url = &staf.top();
strcpy(curl,url->s);
staf.pop();
printf("%s\n",curl);
}
else break;
}
//puts(str);
//cout<<strlen(str)<<endl;
return 0;
}