引言
- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前面提到的数组和链表都是线性表,线性表是零个或多个元素组成的有限序列,接下来我们来聊聊很重要的数据结构-栈,栈为啥重要呢?就是因为栈这种数据结构应用是非常普遍的。比如:我们的方法执行,就是入栈出栈,再比如导航栏的前进和后退,前进就是入栈,后退就是出栈。
栈
其实栈也是线性表,所以可以用数组实现,也可以用链表实现,唯一的区别就是栈是限制你数据只能有一个出口,这样做有什么好处呢?我们知道方法有入栈和出栈,就是保证你在递归调用的时候,正在执行的方法一定要在栈顶,执行完后出栈,执行下一个方法,这样递归就简单了,不然你是不知道递归何时调用结束的。
栈的位置
允许插入和删除数据的一端叫栈顶,另一端就是栈底。没有数据的栈就是空栈。
栈的特点
其实栈还是有一些优势的,比如:插入和删除数据的时候不用挪动其它数据的位置,不过它也有很大的缺陷,也就是说你必须事先确定栈空间的大小,如果设计小了就得扩容,但是扩容非常麻烦,对于栈这样的数据结构,在设计上必须要考虑的周全,设计出合适的栈大小来保证需求。