这题本质上是一个模拟题,可以用两个栈配合一个当前页面来实现浏览器地址栏功能。
相关算法:栈模拟。
核心思路如下:
back_stack 表示当前页面之前的历史页面;小明正在开发浏览器地址栏功能,支持四种操作:visit(访问网页)、back(返回上一页)、forward(前进到下一页)、print(输出当前地址)。
初始状态
Blank,历史记录中只有 1 个 Blank 页面;max_history 个历史记录;操作说明
max_history,则删除最早记录;url 为小写字母、数字和点的组合,长度 ≤100,用例数据均为合法输入。Blank 则输出 Blank。第一行:整数 n(操作数1≤n≤200);第二行:整数maxhistory(0<maxhistory<100);
接下来n行:操作命令。
输出:每次print操作输出当前地址,若无访问过任何页面则输出Blank。
输入
7
10
visit a.com
visit b.com
back
visit c.com
print
forward
print
输出
c.com
c.com
说明
back 命令后,前进记录为 b.com;后续 visit 命令清空前进记录,因此 forward命令无操作。
输入
7
3
visit a.com
visit b.com
visit c.com
visit d.com
back
forward
print
输出
d.com
说明
back后,当前页面为c.com,再forward,当前页面为d.com
输入
9
3
visit a.com
visit b.com
visit c.com
visit d.com
visit e.com
back
back
back
print
输出
c.com
说明
容量为3,历史记录中的页面为c.com、d.com、e.com,两次back后,当前页面为c.com,再次back,前面再无页面,因此当前页面为c.com
输入
4
10
back
print
forward
print
输出
Blank
Blank
说明
初始页面为Blank,历史记录中再无其他页面,因此,back不做操作,fonward也不做操作,输出均为Blank
输入
4
10
visit abc.com
visit abc.com
back
print
输出
abc.com
说明
访问两次相同的页面场景,历史记录中为Blank、abc.com、abc.com,因此,back后,当前页面为abc.com。