Skip to content

Latest commit

 

History

History
 
 

20

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

FILO 栈是一个 先进后出的一个线性组织,我们可以想象一个面缸你往里面装小鱼干,然后拿的时候是不是拿的是最后装的那个,最开始的那个很惨的要 拿光了才轮到他,哈哈哈 装 拿的过程就是 入栈 出栈。

栈有两个操作,入栈和出栈

时间复杂度

入栈的时间复杂度是O(1) 最坏是O(N) 最坏的情况是 栈空间不够了,然后你扩容了,然后将所有数据复制了进去,所以时间复杂度就是O(N)了,那么平均时间复杂度是 多少呢?我们就直接算均摊的吧,加入一个 100的空间,你装 101次才花了 200次 因为最后的那个N是因为扩容,所以将这100次放到前面那100次上,均摊是不是 每次就是2而已,所以 平均时间复杂度和均摊时间复杂度都是O(1)

我们来实现一个场景

我们来实现出栈和入栈,不过我们给一道应用题:如果实现 浏览器的快退和前进。

总体实现方式就是 使用两个栈 A B 每次浏览就将URL存放在A中,如果按了后退,就将A中的栈定出一个栈,然后将这个URL存到B中,然后使用A中这个时刻的URL即可 我们想前进的时候就使用B中的栈每次前进一次就将B中的URL拿出。每次都看A的栈顶就ok了。

实现代码