栈:如何实现浏览器的前进和后退功能?

本文是学习算法的笔记,《数据结构与算法之美》,极客时间的课程

我们浏览网页,经常会用到前进,后退的功能。比如依次浏览了a-b-c 三个页面,这时点后退,可以回到 b 页面,再次点击回到 a 页面。如果这时,又进入 新页面d ,那就无法通过前进,后退功能回到b、c页面了。

这样一个功能,要如何实现呢?

其实这样一个功能,可以借助栈来实现。

什么是栈?它是一个数据结构,数据先进后出,后进先出。打一个比方,放一叠盘子,放的时候,都放最上面,取的时候也从最上面取。典型的后进先出。

栈,可以用数组来实现,也可以用链表来实现。前者叫顺序栈,后者是链式栈。

为什么会有栈这种数据结构,直接用数组或是链表不就好了么?栈有严格的限制,只能从栈顶压入数据,从栈顶取数据,可以满足特定场景的需求,而链表或是数组暴露了太多的接口,容易出错。

如何实现一个栈

public class ArrayStack{
	private String [] items; // 数组
	private int count; // 栈中元素个数
	private int n; //栈的大小
	
	// 初始化数组,申请一个大小为 n 的数组空间
	public ArrayStack(int n){
		items = new String [n];
		this.n = n;
		count = 0;
	}
	// 入栈操作
	public boolean push(String item){
		if(count == n){
			return false;
		}
		items[count-1] = item;
		count++;
		return true;
	}
	// 出栈操作
	public String pop(){
	if(count == 0){
		return null;
	}
	String temp = items[count-1];
	count--;
	return temp;
	}
}

栈的实际应用

栈作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值