poj1038

题目大意:网络导航?
标准的web浏览器包含向前和向后浏览最近的页面的特性,有一个方法来实现这些用两个栈来跟踪页面达到向前和向后的移动,在这个问题里面,你被要求实现这些。
以下命令需要支持:
BACK:把当前页面放进前面的栈的最顶部,删除这个页面在后面的栈,使其成为新的当前页面,如果后面的栈是空格,命令被忽略;
FORWARD:跟上面的相反    ;
VISIT:把当前页面放在后面栈的顶部,并使URL指定新的页面,前面的栈是清空。
QUIT:退出浏览器。
假设浏览器最初加载的页面是 URL http://www.acm.org/
倒是个练习栈的好题目

 

#include<iostream>
#include< string>
#include<stack>
using  namespace std;

int main()
{
     string Now= " http://www.acm.org/ ";
     string Back= " BACK ", Forwed= " FORWARD ",Visit= " VISIT ", Op;
    stack< string>FRWRD, BCK;

     while(cin >> Op, Op !=  " QUIT ")
    {
         if(Op == Visit)
        {
            BCK.push(Now);
            cin >> Now;
             while(FRWRD.size())
                FRWRD.pop();
        }
         else  if(Op == Forwed)
        {
             if(FRWRD.size() ==  0)
            {
                cout <<  " Ignored " <<endl;
                 continue;
            }
             else
            {
                BCK.push(Now);
                Now = FRWRD.top();
                FRWRD.pop();
            }
        }
         else
        {
             if(BCK.size() ==  0)
            {
                cout <<  " Ignored " <<endl;
                 continue;
            }
             else
            {
                FRWRD.push(Now);
                Now = BCK.top();
                BCK.pop();
            }
        }

        cout << Now <<endl;
    }

     return  0;

} 

 

你可能感兴趣的:(poj)