【程序员必备小知识-基础8】浅谈栈

139 阅读1分钟

引言

前面提到的数组和链表都是线性表,线性表是零个或多个元素组成的有限序列,接下来我们来聊聊很重要的数据结构-栈,栈为啥重要呢?就是因为栈这种数据结构应用是非常普遍的。比如:我们的方法执行,就是入栈出栈,再比如导航栏的前进和后退,前进就是入栈,后退就是出栈。

其实栈也是线性表,所以可以用数组实现,也可以用链表实现,唯一的区别就是栈是限制你数据只能有一个出口,这样做有什么好处呢?我们知道方法有入栈和出栈,就是保证你在递归调用的时候,正在执行的方法一定要在栈顶,执行完后出栈,执行下一个方法,这样递归就简单了,不然你是不知道递归何时调用结束的。

栈的位置

允许插入和删除数据的一端叫栈顶,另一端就是栈底。没有数据的栈就是空栈

栈的特点

其实栈还是有一些优势的,比如:插入和删除数据的时候不用挪动其它数据的位置,不过它也有很大的缺陷,也就是说你必须事先确定栈空间的大小,如果设计小了就得扩容,但是扩容非常麻烦,对于栈这样的数据结构,在设计上必须要考虑的周全,设计出合适的栈大小来保证需求。