Navigation

简介:
#include <iostream>
#include <stack>
#include <string>
#include <vector>
using namespace std;

void ClearStack(stack<string> &s);
string getCurentWeb(const string &cmd);

int main()
{
    stack<string> backward,//已经访问的网页
                  forward; //访问下一个网页
    int blocks, i = 0; //接收测试的块数
    vector<string> vec;
    string originalWeb("http://www.acm.org/");
    string curWeb("http://www.acm.org/"); //接收要打开的网页
    string cmdBack("BACK");
    string cmdForward("FORWARD");
    string cmdVISIT("VISIT");
    string cmdQuit("QUIT");
    string ignored("Ignored");
    string cmd;

    cin >> blocks;
    while (i++ < blocks)
    {
        getline(cin, cmd);
        while (cmd != cmdQuit)
        {
            //****************处理VISIT COMMAND******************************
            if (string::npos != cmd.find(cmdVISIT))//找到
            {
                backward.push(curWeb);             //把当前网页压入后退栈
                curWeb = getCurentWeb(cmd);
                //cout << "curWeb=" << curWeb << endl;
                vec.push_back(curWeb);
                ClearStack(forward);               //前进栈置空
            }//**************************************************************
            //****************处理BACK COMMAND*******************************
            else if (cmd == cmdBack)
            {
                if (backward.empty())
                {
                    vec.push_back(ignored);
                    //cout <<"Ignored" << endl;

                }
                else if (curWeb != originalWeb)
                {
                    //cout << "入前进栈的是:" << curWeb << endl;
                    forward.push(curWeb);             //把当前网页压入前进栈
                    curWeb = backward.top();      //取栈顶元素
                    backward.pop();               //删除栈顶元素
                    vec.push_back(curWeb);
                }
            }
            //****************处理FORWARD COMMAND****************************
            else if (cmd == cmdForward)
            {
                if (forward.empty())
                {
                    vec.push_back(ignored);
                   // cout <<"Ignored" << endl;
                }
                else
                {
                    //cout << "入后退栈的是:" << curWeb << endl;
                    backward.push(curWeb);
                    curWeb = forward.top();
                    forward.pop();
                    vec.push_back(curWeb);
                }
            }
            //****************处理完毕***************************************
            getline(cin, cmd);//接收新的命令
        }//结束内层while
        //每一组测试完毕,要清空前进和后退栈
        ClearStack(backward);
        ClearStack(forward);
    }//结束外层while

    for (vector<string>::iterator it = vec.begin(); it != vec.end(); it++)
    {
        cout << *it << endl;
    }

    return 0;
}

//*****************清空栈****************************************************
void ClearStack(stack<string> &s)
{
    while (!s.empty())
    {
        s.pop();
    }
}

//*****************获取当前正要访问的网页*********************************
string getCurentWeb(const string &cmd)
{
    int len = cmd.size();
    string tmp;

    for (int i = 6; i < len; i++)
        tmp += cmd[i];
    //cout << "tmp=" << tmp << endl;
    return tmp;
}

目录
相关文章
|
存储 Linux Go
基于MinIO搭建高性能文件服务器
基于MinIO搭建高性能文件服务器
1527 0
基于MinIO搭建高性能文件服务器
|
12月前
|
并行计算 监控 Linux
《CST Studio Suite 2024 GPU加速计算指南》
《GPU Computing Guide》是Dassault Systèmes发布的CST Studio Suite 2024的GPU计算指南,涵盖了硬件支持、操作系统支持、许可证、启用方法、NVIDIA和AMD GPU的详细信息及使用指南和故障排除等内容。硬件支持包括NVIDIA和AMD的多种GPU型号,操作系统支持多种版本,许可证通过加速令牌或SimUnit令牌授权。启用方法包括交互式模拟和批处理模式。使用指南和故障排除部分提供了详细的配置和问题解决方法。
886 9
|
人工智能 自然语言处理 算法
Jarvis×百炼,打造大模型智慧出行客服
本次分享由哈啰集团高级算法专家郭佳盛主讲,主题为“Jarvis×百炼,打造大模型智慧出行客服”。内容涵盖AI在智慧出行领域的应用探索、AI加持客服全链路解决方案、哈罗智能客服的大模型应用、大模型在C端与B端的应用探索,以及企业内部大模型构建与运营。通过实例和经验分享,展示了哈啰如何将大模型应用于实际业务,提升用户体验和运营效率。
|
数据可视化 搜索推荐 BI
哪些任务进度管理器值得推荐?几款工具使用测评
在快节奏的工作环境中,任务进度管理器成为提高效率和协作的关键工具。本文介绍了三款高效实用的管理软件:板栗看板、Trello 和 Asana。这些工具不仅帮助用户更好地规划和跟踪项目进度,还能确保任务按时完成。板栗看板以其直观的看板和灵活的自定义选项受到青睐;Trello 通过丰富的插件和跨平台支持,成为全球广泛使用的工具;Asana 则以强大的功能和灵活的工作流管理,适合大型企业和复杂项目的管理需求。用户可根据自身需求选择合适的工具,提高团队协作效率,达成项目目标。
|
SQL Oracle 关系型数据库
解读数据传输DTS技术架构及最佳实践
在阿里云数据库技术峰会上,阿里巴巴高级技术专家付大超(千震)针对于云计算时代最好的数据传输产品阿里云DTS的架构设计、基本原理以及相关的应用场景进行了精彩分享。帮助大家了解了阿里是如何实现异地多活和异构多活的,以及通过DTS轻松实现迁移、双同同步、容灾、订阅的真实案例。
14768 1
|
Python
Python编程:运行目录或zip压缩文件
Python编程:运行目录或zip压缩文件
193 0
|
机器学习/深度学习 域名解析 弹性计算
阿里云ECS云服务器和轻量应用服务有什么区别及选择方法
轻量应用服务器是轻量级的云服务器,不能搭建集群,适用于单机应用,比如单机网站应用。
|
Linux 网络安全 数据安全/隐私保护
Linux-Mac配置SSH免密登录
Linux-Mac配置SSH免密登录
1929 0
|
人工智能 城市大脑 大数据
澳门拥抱阿里云:全面应用智能技术,为城市装上“大脑”
澳门这座古老而现代的国际都市将以开放的姿态全面拥抱云计算和人工智能。8月4日,澳门特别行政区政府与阿里巴巴签署《构建智慧城市战略合作框架协议》,将应用阿里巴巴领先的云计算和人工智能技术,在交通管理、旅游、医疗服务、城市综合管理、人才培训等方面展开合作,为澳门构建城市治理的人工智能中枢,助力澳门发展成一个“以数字引领科技,智能服务民生”的智慧城市。
13363 0
|
移动开发 JavaScript 前端开发