1. 为什么要使用双向栈?
通过上一篇博客 - 特殊的线性表(栈),不难知道栈的顺序存储(数组实现)性能相对较好,因为它不存在插入和删除时移动元素的问题,但是它有一点缺陷:要事先确定数组存储容量的大小,万一不够,就需要扩充数组容量。这时双向栈就派上用场了,它可以最大限度的利用事先开辟的存储空间。
2. 双向栈有什么特点?
数组有两个端点,两个栈有两个栈底,让一个栈的栈底为数组的始端,即下标为0处,另一个栈为数组的末端,即下标为数组长度M-1处。这样,两个栈如果增加元素,就会从两端点向中间延伸(如下图)。
3. Java实现双向栈
4. 什么时候使用双向栈?
1.) 两个栈的空间需求有相反关系时,也就是当一个栈增长时另一个栈在缩短的情况。
2.) 两个栈需要具有相同的数据类型,如果数据类型不同,将会使问题复杂化。