题目:
代码如下:
计蒜客上的题目黏贴不了,大家凑合看一下截图吧…
个人觉得这道题还是不错的,实现BACK和FORWARD这两个操作光靠一个栈可不够,因为一个栈你把网址拿出来之后就再也访问不到之前的了,所以需要用另外一个栈来存放你从第一个栈中拿出的网址。基本思路是这样的,当执行VISIT操作时,你需要把第二个栈全部清空,因为你再也没有FORWARD的可能了,此时再往前肯定是Ignore,因为这是一个新的开始(个人是这么理解的…)。此时你只需要把这个新的网址放到第一个栈中就可以了。当执行”BACK“操作时,你要把第一个栈的栈顶元素拿出放入第二个栈中,如果此时第一个栈只有<=1个元素了,那么你是回不去的。这里肯定有很多人认为为何不是栈为空的时候呢?因为你当前的页面是在这个网址,也就是说此时栈中除了这个网址没有别的多余网址了,你不能再往回了(这里我第一次也写错了)。当执行”FORWARD“操作时你需要把第二个栈的栈顶元素拿出放回第一个栈中,此时Ignore的条件与BACK的不同,需要第二个栈为空才会是Ignore。因为第二个栈保存的是你之前访问过的网页,而不是现在停留的。(这是二者的区别)