栈
在实现栈之前,先了解下线性数据结构
一般而言,有序的数据集合,其元素的顺序取决于添加和移除顺序,一旦某个元素被添加进来,与其左右元素相对位置保持不变,这样的数据集合,被称为线性数据结构
添加、移除操作总是发生在同一端——顶端,另一端则是底端
1、最新添加的元素最先被移除-排序原则:LIFO(后进先出)
在python中,有一个库用于注册退出函数的,可用他实现栈
1 import atexit 2 3 4 def a(): 5 print("1") 6 7 8 def b(): 9 print("2") 10 11 12 def c(): 13 print("3") 14 15 16 if __name__ == '__main__': 17 """ 18 体现了栈 19 的反转特性 20 """ 21 atexit.register(a) 22 atexit.register(b) 23 atexit.register(c)
output:
3
2
1
网站中连续页面的访问,其url也存放在一个栈中,当前访问的网页位于栈的顶端,最早访问的网页位于底端,点击返回按钮,则开始反向浏览
2、python实现栈
结合列表也可以实现栈,只要确定列表的头部还是尾部作为顶端即可,头部和尾部两种情况对应不同的运行情况(时间复杂度不同)
2.1、列表的尾部作为栈的顶端
无论元素多少,时间恒定都是:O(1)
2.2、列表的头部作为栈的顶端
随着元素的增多,会越来越慢。时间复杂度为O(n)
2.3、具体实现代码后续给出