POJ 1028 Web Navigation題解


コードの能力をテストするテーマ。アルゴリズムの水問題とも言えます。
初心者のコード練習能力を紹介します。
難易度を上げるには、純粋なCを使ってスタックを実現するのがちょっと難しいです。配列シミュレーションリングスタックを使ってもいいです。作りすぎたらSTLをそのまま使います。
#include 
#include 
#include 
#include 
using namespace std;

int main()
{
	stack forward;
	stack 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();
		}
		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;
}