poj_1028
来源:互联网 发布:c语言pthread 编辑:程序博客网 时间:2024/06/06 18:46
题意: 给你一些命令来处理网页,有visit,back,forward,quit。Visit命令就是把当前页压到backward栈中,当前页为visit的网站,并清空forward栈。Back命令是把当前页压到forward栈里,当前页变成backward栈的最上边的网页,并将这个页弹出栈。Forward和back相反,是把当前页压到backward栈里,然后当前页变成forward栈的最上边的网页,并将这个页弹出栈。输出的是执行每条命令的后当前的网页,如果backward或forward栈为空,则输出‘Ingored’。
#include <iostream>
#include <string>
using namespace std;
template<class T>
class stack{
int Top;
T s[150];
public:
stack(){
Top = -1;
}
T top(){
return s[Top];
}
void pop(){
Top -= 1;
}
void push(T a){
s[++Top] = a;
}
bool isampty_back(){
if (Top <=0) {
return true;
}
return false;
}
bool isampty_forward(){
if (Top <0) {
return true;
}
return false;
}
void destoery(){
Top = -1;
}
};
int main(){
string s ="http://www.acm.org/";
stack<string> preview;
stack<string> back;
string ans[150];//当前页
int i = 0;
back.push(s);
while (cin>>s) {
if (s == "QUIT") {
break;
}
else if(s =="VISIT"){
preview.destoery();
cin>>s;
back.push(s);
ans[i++] = s;
cout<<ans[i-1]<<endl;
}
else if(s =="BACK"){
if (!back.isampty_back()) {
preview.push(ans[i-1]);
back.pop();
s = back.top();
ans[i++] = s;
cout<<ans[i-1]<<endl;
}
else{
ans[i++] = "Ignored";
cout<<ans[i-1]<<endl;
}
}
else if(s =="FORWARD"){
if (!preview.isampty_forward()) {
s = preview.top();
ans[i++] = s;
cout<<ans[i-1]<<endl;
back.push(s);
preview.pop();
}
else{
ans[i++] = "Ignored";
cout<<ans[i-1]<<endl;
}
}
}
return 0;
}
- POJ_1028
- poj_1028
- poj_1028 Web Navigation
- CodeVS1990 中国余数定理2
- LeetCode *** 172. Factorial Trailing Zeroes
- JZOJ.3383 太鼓达人
- Web开发_问题解决(3)之linux服务器上获取路径问题||jsp页面报错问题
- Android-ndk-64位so文件问题(RSA加密采用cpp代码实现)
- poj_1028
- Android 第十一天重置版_新特性
- 002-栈
- bzoj1008: [HNOI2008]越狱
- Tarjan&LCA题集
- 面积公式小结
- SSH2+ajax+jsp登录源码
- 排序算法之直接插入排序和希尔排序
- leetcode 80 Remove Duplicates from Sorted Array II