题意:模拟一个网页浏览器的操作,BACK, FORWARD, VISIT, and QUIT。
思路:。。。
代码1:段。。
//模拟法
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main(){
int t=0;//当前网址位置
int c[500];//c数组标记网址是否存在
memset(c,0,sizeof(c));
string a[500];//储存网址
a[0]="http://www.acm.org/";
c[0]=1;
string b;
while(cin>>b&&b[0]!='Q'){
if(b[0]=='V'){
t++;
cin>>a[t];
cout<<a[t]<<endl;
c[t]=1;
c[t+1]=0; //把当前访问的后面的抹掉
}
if(b[0]=='B'){
if(t==0)cout<<"Ignored"<<endl;
else{
t--;cout<<a[t]<<endl;
}
}
if(b[0]=='F'){
if(c[t+1]==0)
cout<<"Ignored"<<endl;
else{
t++; cout<<a[t]<<endl;
}
}
}
return 0;
}
代码2:自己写的
#include<iostream>
#include<string>
using namespace std;
int main(){
string b[500];//BACK栈
b[0]="http://www.acm.org/";
string f[500];//FORWARD栈
int lb,lf;//BACK位置,FORWARD位置
lb=0;lf=0;//初始位置为0
string s;//命令
string s2;//网址
while(cin>>s&&s[0]!='Q'){
if(s[0]=='B'){
if(lb==0) cout<<"Ignored"<<endl;
else{
lf++;//forward加一
f[lf]=b[lb];
lb--;//back减一
cout<<b[lb]<<endl;
}
}
else if(s[0]=='F'){
if(lf==0) cout<<"Ignored"<<endl;
else{
lb++;//back加一
b[lb]=f[lf];
cout<<f[lf]<<endl;
lf--;//forward减一
}
}
else{
lb++;//back加一
lf=0;//forward变为0
cin>>b[lb];
cout<<b[lb]<<endl;
}
}
return 0;
}