http://poj.org/problem?id=1028
题意(水):做一个游览器的历史记录。
back:后退到上一个页面,当上一个页面没有时,输出ignored.
forward:向前一个页面,但此页面为最前的页面时,输出ignored.
vista:游览所指定的页面。
quit:退出。
解题思路:题目是说用栈,但不用栈也是可以的。就用纯数组来模拟就栈。
我用的是string类型,这个类型有个好处,就是比较不用strcmp函数,还有输入方便,直接cin就行。但其实本质就是char[];
1 #include <stdio.h> 2 #include <string.h> 3 #include <string> 4 #include <iostream> 5 6 using namespace std; 7 8 string str[1000],str1[1000]; //记得数组不能开太小,开太小就会RE。 9 10 int main() 11 { 12 int n=0,mark=0,now=0; 13 str1[0]="http://www.acm.org/"; //题目说最原始的页面就是这个acm的。 14 while(cin>>str[n]&&str[n]!="QUIT"){ 15 if(str[n]=="VISIT"){ 16 mark++; 17 now++; 18 if(mark>now) mark=now; //页面的覆盖。 19 cin>>str1[mark]; 20 } 21 if(str[n]=="VISIT") { 22 cout<<str1[mark]<<endl; 23 } 24 if(str[n]=="BACK") { 25 if(now==0) cout<<"Ignored"<<endl; 26 else cout<<str1[--now]<<endl; 27 } 28 if(str[n]=="FORWARD"){ 29 if(now==mark) cout<<"Ignored"<<endl; 30 else cout<<str1[++now]<<endl; 31 } 32 n++; 33 } 34 return 0; 35 }