浏览器(C++题解)

今天又做了一道题哈,直接上代码,边看边解释

#include <bits/stdc++.h>
using namespace std;
int main(){

    stack <string> iin,back;//定义了两个栈,用来表示返回和前进的网站

    string m;//定义操作类型变量

    int n;
    cin >> n;//输入循环次数

    for (int i = 0; i<n; i++){
        
        cin >> m;

        string u;
        
        if (m == "VISIT"){
            cin >> u;
            iin.push(u);
            cout << iin.top() << endl;
            while(!back.empty()){
                back.pop();
            }
            continue;
        }//*当输入为“VISIT”时需要将当前访问网站输出,再将保存返回网站的back栈清空
           (通常我们自己访问网站时,访问新的网站后,向前返回的箭头按钮就会变得暗
            淡,不让点击)*//

        if (m == "BACK" && iin.size() != 1 && iin.size() != 0){
            back.push(iin.top());
            iin.pop();
            cout << iin.top() << endl;
            continue;
        }//当输入为“BACK”时,需要判断保存进入的网站的栈是否为1或0(1是前面没有网站,
            0是根本没有打开网站)如不为空或1,则进行返回*//                                    

        if (m == "BACK" && iin.size() <= 1){
            cout << "Ignore" << endl;
            continue;
        }//上一种情况的反面,无法执行成功,返回“Ignore”

        if (m == "FORWARD" && !back.empty()){
            iin.push(back.top());
            back.pop();
            cout << iin.top() << endl;
            continue;
        }//*当输入为“FORWARD”时,判断保存前进的网站的栈是否为空,不为空则允许前进

        if (m == "FORWARD" && back.empty()){
            cout << "Ignore" << endl;
            continue;
        }//不为空则输出“Ignore”
    }
    return 0;
}

样例输入:

10
VISIT https://www.showme.com/course/476
VISIT https://www.taobao.com/
BACK
BACK
FORWARD
FORWARD
BACK
VISIT https://www.showme.com/course/429
FORWARD
BACK


样例输出:

https://www.showme.com/course/476
https://www.taobao.com/
https://www.showme.com/course/476
Ignore
https://www.taobao.com/
Ignore
https://www.showme.com/course/476
https://www.showme.com/course/429
Ignore
https://www.showme.com/course/476

运行结果应该是没有错的,但代码仍有许多瑕疵

如果大家有更好的意见请尽管提出,感谢指点
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值