您的位置:首页 > 其它

POJ 1028 解题报告

2014-11-20 09:00 399 查看
这道题就是按照题目描述实现的。浏览器的backward和forward设计讲得很明白。

1028Accepted700K16MSG++1987B
/*
ID: thestor1
LANG: C++
TASK: poj1028
*/
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <limits>
#include <string>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
#include <cassert>

using namespace std;

int main()
{
ios::sync_with_stdio(false);
string command, currenturl = "http://www.acm.org/";
stack<string> backwardstack, forwardstack;
while (cin >> command && command != "QUIT")
{
// VISIT : Push the current page on the top of the backward stack, and make the URL specified the new current page.
// The forward stack is emptied.
if (command == "VISIT")
{
backwardstack.push(currenturl);
cin >> currenturl;
while (!forwardstack.empty())
{
forwardstack.pop();
}
cout << currenturl << endl;
}
// BACK: Push the current page on the top of the forward stack. Pop the page from the top of the backward stack, making it the new current page.
// If the backward stack is empty, the command is ignored.
else if (command == "BACK")
{
if (backwardstack.empty())
{
cout << "Ignored" << endl;
}
else
{
forwardstack.push(currenturl);
currenturl = backwardstack.top();
backwardstack.pop();
cout << currenturl << endl;
}
}
// FORWARD: Push the current page on the top of the backward stack. Pop the page from the top of the forward stack, making it the new current page.
// If the forward stack is empty, the command is ignored.
else if (command == "FORWARD")
{
if (forwardstack.empty())
{
cout << "Ignored" << endl;
}
else
{
backwardstack.push(currenturl);
currenturl = forwardstack.top();
forwardstack.pop();
cout << currenturl << endl;
}
}
else
{
cout << "unkown command:" << command << endl;
assert(false);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: