栈:
栈的概述:
虽然看起来它只是数组的子集,但是栈的这种结构对于计算机中组建逻辑有这非常非常大的作用。
入栈 出栈:
栈是一种先进后出(FILO First in Last Out )的结构。
栈的应用01:撤销操作:
栈的应用02:程序调用的系统栈:
了解它有助于我们更加理解递归!!!
此时的系统栈中会记录下:
A2的意思是执行到A函数的第二行了。
同样系统栈中会继续压入!!!
当C 函数执行完毕之后,我们的计算机就不知道该执行谁了,
它此时会看系统栈中的内容,
发现是B2 ,所以开始从B2继续执行。(同时会弹出B2)
当B函数也执行完毕时候,计算机又会看下系统栈,发现是A2
所以,它就会从A2开始执行。(同时会弹出A2)
当A函数也执行完毕的时候,系统栈中为空。所以函数执行完毕!!!
这个过程对理解递归有很大的帮助,后面会有关于递归的内容。
栈的实现:
栈基本的五种操作:
其中peek () 有的 语言中 喜欢叫它top() !
这里说一种 栈的底层实现(另外一种后面会说):
后面的队列会说两种不同的底层实现。
代码设计方式:
先设计一个接口,然后用ArrayStack 去实现它。
具体代码如下: