数据结构--栈--浏览器前进后退应用

浏览器前进后退:
当你依次浏览a,b,c,然后回到b,再浏览d,就只能查看a,b,d,了。
原理: 利用两个栈A,B

  1. 浏览新网页的时候,压入栈A,清空栈B
  2. 前进,栈A获取栈B的栈顶元素,栈B弹栈,并压入栈A
  3. 后退,栈B获取栈A的栈顶元素,栈A弹栈,并压入栈B

题目:LeetCode 5430. 设计浏览器历史记录(双栈)

browser.h头文件

//
// Created by mingm on 2019/3/31.
//
#ifndef STACK_BROWSER_H
#define STACK_BROWSER_H#include "stack.cpp"
class Browser
{
private:Stack<const char*> forward_stack, back_stack;void displayCurWeb(const char *ch){cout << "Current web is : " << ch << endl;}
public:Browser(){}~Browser(){}void forward(){if(!back_stack.Empty()){forward_stack.Push(back_stack.GetTop()->data);back_stack.Pop();displayCurWeb(forward_stack.GetTop()->data);}else{cout << "can not forward, there is no more page!" << endl;displayCurWeb(forward_stack.GetTop()->data);}}void back(){if(forward_stack.GetLength()>1){back_stack.Push(forward_stack.GetTop()->data);forward_stack.Pop();displayCurWeb(forward_stack.GetTop()->data);}else{cout << "can not back, there is no more page! " << endl;displayCurWeb(forward_stack.GetTop()->data);}}void browseWeb(const char* ch){back_stack.Clear();forward_stack.Push(ch);displayCurWeb(forward_stack.GetTop()->data);}
};
#endif //STACK_BROWSER_H

测试程序 browser_stack_main.cpp

//浏览器前进后退功能,栈实现
// Created by mingm on 2019/3/31.
//
#include "browser.h"
#include <iostream>
using namespace std;int main()
{Browser webBrowser;webBrowser.browseWeb("baidu.com");webBrowser.browseWeb("google.com");webBrowser.browseWeb("163.com");cout << "forward..." << endl;webBrowser.forward();cout << "back..." << endl;webBrowser.back();cout << "browse mi.com ..." << endl;webBrowser.browseWeb("mi.com");cout << "forward..." << endl;webBrowser.forward();cout << "back..." << endl;webBrowser.back();cout << "back..." << endl;webBrowser.back();cout << "back..." << endl;webBrowser.back();cout << "forward..." << endl;webBrowser.forward();
}

valgrind测试结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于BERT,面试官们都怎么问

1.BERT 的基本原理是什么&#xff1f;BERT 来自 Google 的论文Pre-training of Deep Bidirectional Transformers for Language Understanding&#xff0c;BERT 是“Bidirectional Encoder Representations from Transformers”的首字母缩写&#xff0c;整体是一个自编码语言模…

牛逼!支付宝高级Java三面题目:线程锁+事务+雪崩+Docker等

支付宝高级Java一面 JVM中的老年代在什么情况下会触发GC&#xff1f; CMS的垃圾回收步骤&#xff0c;G1和CMS的区别&#xff1f; CMS哪个阶段是并发的&#xff0c;哪个阶段是串行的&#xff1f; 谈谈Java线程池&#xff0c;线程池中几个参数含义 谈谈你了解的J.U.C包的JDK源…

鲍捷 | 深度解析知识图谱发展关键阶段及技术脉络

本文转载自公众号&#xff1a; AI科技大本营 。 分享嘉宾 | 鲍捷&#xff08;文因互联CEO&#xff09;出品 | AI科技大本营&#xff08;公众号ID&#xff1a;rgznai100&#xff09;知识图谱是人工智能三大分支之一——符号主义——在新时期主要的落地技术方式。该技术虽然在 20…

8大常用数据库管理系统简介

转自&#xff1a;http://vps.zzidc.com/vpsjishu/817.html 数据库管理系统(Database Management System)是种操纵和管理数据库的大型软件&#xff0c;是用于建立、使用和维护数据库&#xff0c;简称DBMS。是企业进行数据管理及维护不可或缺的数据管理软件。 8大常用数据库管理系…

知识图谱之语言计算与信息抽取

语言计算与信息抽取是自然语言处理中两块重要内容。本文将根据自己的工作总结&#xff0c;形成了语言计算与信息抽取的知识图谱分布图。 一、总体图谱 二、概念抽取 三、实体抽取 四、事件抽取 五、语言监测 六、文本计算内容 七、文本内容计算应用 总结 本文介绍了关于语言…

数据结构--队列Queue--链式队列、顺序队列

队列&#xff1a;先进先出&#xff0c;就如排队一样&#xff0c;先到的&#xff0c;先排上 1.链式队列 1.1 头文件 listQueue.h /*** description: 链式队列* author: michael ming* date: 2019/4/1 22:47* modified by:*/#ifndef QUEUE_LISTQUEUE_H #define QUEUE_LISTQUEU…

技术动态 | 人工智能开源软件发展现状连载——知识图谱开源软件

本文转载自公众号&#xff1a;中国人工智能开源软件发展联盟&#xff0c;欢迎大家点击文末二维码关注。知识图谱 (Knowledge Graph)是一种基于图的数据结构&#xff0c;由节点(Point)和边(Edge)组成。在知识图谱里&#xff0c;每个节点表示现实世界中存在的“实体”&#xff0c…

2018 支付宝Java开发四面:Ngnix+MQ队列+集群+并发抢购

一面 介绍项目 java 线程池的实现原理&#xff0c;threadpoolexecutor关键参数解释 hashmap的原理&#xff0c;容量为什么是2的幂次 为什么要同时重写hashcode和equals ConcurrentHashMap如何实现线程安全&#xff1f; 介绍Java多线程的5大状态&#xff0c;以及状态图流转…

ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;机智的叉烧&#xff08;OPPO算法工程师&#xff0c;擅长Query理解方向&#xff09;背景搜索和推荐经常会被放在一起对比&#xff0c;其中最突出的区别就是搜索中存在query&#xff0c;需要充分考虑召回内容和query之间的…

微型计算机性能指标以及分类

衡量微型计算机的主要技术指标是&#xff1f;特点是&#xff1f; 2018-11-29 20:38:08 来源&#xff1a;贤集网 赵媛 微型计算机大家应该耳熟能详&#xff0c;它又比称为“微型机”&#xff0c;由于其具备人脑的某些功能&#xff0c;所以也称其为“微电脑”。现在流行的微…

数据结构--队列Queue--循环顺序队列

针对顺序队列中的入队操作&#xff1a;if 队列没满&#xff0c;但是队尾到达数组末尾了&#xff0c;队列"满"了&#xff0c;其实没有满&#xff0c;数据需要整体移至数组头部&#xff0c;才可以继续入队。 为解决该问题&#xff0c;避免数据的挪移&#xff0c;有了循…

基于因果逻辑库的定性事件结果及结果方向性预测

EventPredictBasedOnEG future event predict demo based on causal event graph that covers the full industries that can predict the benefits or bad effects in accordance with the event given by the user, 基于因果逻辑库的定性事件及方向性预测 项目介绍 基于海…

领域应用 | 为电商而生的知识图谱,如何感应用户需求?

本文转载自公众号&#xff1a;阿里技术(ali_tech)。 阿里妹导读&#xff1a;本文从需求分析和体系化构建的角度出发&#xff0c;阐述在电商这一特殊领域的知识图谱构建过程中&#xff0c;形成的一整套概念体系&#xff0c;还有在此过程中&#xff0c;通过算法、工程、产品、…

史上最全阿里Java面试题目大汇总!强烈建议收藏~

阿里面试题目目录 技术一面&#xff08;基础面试题目&#xff09; 技术二面&#xff08;技术深度、技术原理&#xff09; 项目实战&#xff08;项目模拟面试&#xff09; JAVA开发技术常问的问题 阿里必会知识 阿里面试范畴 阿里面试总结 一&#xff1a;阿里技术一面&…

数据结构与算---重点复习知识

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/sakurakider/article/details/82924371 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoeni…

GPT-3诞生,Finetune也不再必要了,NLP领域又一核弹

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&…

POJ 1363 火车厢排队问题(栈)

题目链接&#xff1a;http://poj.org/problem?id1363 题目大意&#xff1a; A站有编号为1到N&#xff0c;N最大1000&#xff0c;的车厢&#xff0c;车厢进入中转station了就不能回到A&#xff0c;只能停在station内或者进入B站&#xff0c;问能不能按照给定的顺序排成那样的车…

基于线上问答社区的逻辑性知识自动问答接口ZhidaoChatbot

ZhidaoChatbot ZhidaoChatbot, a chatbot that can be an expert on the common questions like why,how,when,who,what based on the online question-answer website&#xff0c;基于线上公开问答数据的知道类问答机器人demo&#xff0c;与检索方式不同&#xff0c;可以进行…

徐阿衡 | 知识抽取-实体及关系抽取(一)

本文转载自公众号&#xff1a;徐阿衡。 这一篇是关于知识抽取&#xff0c;整理并补充了上学时的两篇笔记 NLP笔记 - Information Extraction 和 NLP笔记 - Relation Extraction&#xff0c;梳理了知识抽取的基本方法&#xff0c;包括传统机器学习及经典的深度学习方法。知识抽取…

非常全面的阿里的Java面试题目,涵盖Java基础+高级+架构

阿里技术一面 自我介绍 Java中多态是怎么实现的 Java中的几种锁 数据库隔离级别 脏读 幻读 ACID mysql的隔离级别 mysql索引实现&#xff0c;如何解决慢查询 数据库锁是怎么实现的 死锁的条件&#xff0c;进程和线程区别 tcp/ip模型&#xff0c;tcp和udp区别 Linux查看…