浏览器的前进、后退功能:
依次访问A、B、C页面,然后点击浏览器的后退功能可以依次查看B、A两个页面,当你后退到页面 A,点击前进按钮,就可以重新查看页面B和和C。但是,如果你后退到页面 B 后,点击了新的页面 D,那就无法再通过前进、后退功能查看页面 C了。(可以打开一个新的页面进行模拟一下);
用栈来实现浏览器的前进后退功能,
主要是使用栈的特性先进后出、后进先出:
需要X、Y两个栈来实现,首次浏览页面依次压入栈X中,后退就就将页面从X中删除并压入到Y栈中;点击前进的是就把Y中的元素压入到X中并将Y中的元素删除;当X、Y中分别没有数据了就不能前进和后退功能了;
- 依次查看了A、B、C三个页面
Stack<string> x = new Stack<string>();
Stack<string> y = new Stack<string>();
//浏览A
x.push("A");
//浏览B
x.push("B");
//浏览C
x.push("C");
栈的数据如下:
- 后退查看B再后退到A页面进行查询,同时需要将C和B页面插入到Y中;
//后退C 这时候C页面放入y栈中,同时移除掉x中的C
y.push("C");
x.pop();
//后退B 这时候B页面放入y栈中
y.push("B");
x.pop();
栈的数据如下:
- 当再B页面查看D页面的时候,C页面就不能通过前进后退的功能查看了,所以需要清空Y;
//然后前进到B页面
x.push("B");
y.pop();
//此时x中只有AB 两个页面,y中C两个页面
//打开新的页面D
x.push("D");
//页面 c 就无法再通过前进、后退按钮重复查看了,所以需要清空
y.pop();