首页 > 代码库 > POJ 1028 Web Navigation 题解

POJ 1028 Web Navigation 题解

考查代码能力的题目。也可以说是算法水题,呵呵。

推荐新手练习代码能力。

要增加难度就使用纯C实现一下stack,那么就有点难度了,可以使用数组模拟环形栈。做多了,我就直接使用STL了。


#include <stdio.h>
#include <iostream>
#include <stack>
#include <string>
using namespace std;

int main()
{
	stack<string> forward;
	stack<string> backward;
	string cur = "http://www.acm.org/";
	string cmd;

	while (cin>>cmd)
	{
		if (cmd == "QUIT") break;

		if (cmd == "VISIT")
		{
			backward.push(cur);
			cin>>cur;
			puts(cur.c_str());
			forward = stack<string>();
		}
		else if (cmd == "BACK")
		{
			if (backward.empty())
			{
				puts("Ignored");
			}
			else
			{
				forward.push(cur);
				cur = backward.top();
				backward.pop();
				puts(cur.c_str());
			}
		}
		else if (cmd == "FORWARD")
		{
			if (forward.empty())
			{
				puts("Ignored");
			}
			else
			{
				backward.push(cur);
				cur = forward.top();
				forward.pop();
				puts(cur.c_str());
			}
		}
	}
	return 0;
}