栈
栈的定义:
栈是限定仅在表尾进行插入和删除操作的线性表
我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)
不含任何元素的栈称为空栈。
栈又称后进先出的线性表,简称LIFO结构,(Last In First Out)。
栈本身是一个线性表,其数据元素具有线性关系,只不过他是一种特殊的线性表而已。
定义中说的是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底。
栈的操作:
栈的插入操作,叫作进栈,也称压栈,入栈。
栈的删除操作,也叫出栈,也称弹栈。
栈接口Stack的实现:
int getSize()获取尺寸
boolean isEmpty()判断是否为空
void push(E e)进栈一个元素
E pop()出栈一个元素
E peek()获取当前栈顶 不移除
void clear()清空栈
ArrayList和ArrayStack的关系
对ArrayStack的操作其实是对ArrayList的操作,ArrayStack把ArrayList当做一个工具来使用,对栈的操作就是对线性表的操作。
所以栈的实现可以完全借用线性表。
栈接口的代码:
ArrayStack的实现:
栈的测试:
测试结果:
双端栈
双端栈的定义:
是指将一个线性表的两端当做栈底分别进行入栈和出栈操作。
等价于将两个栈拼接在了一块
双端栈的实现:
双端栈的实现主要是分成两个部分,两个方向的增删,哪端少加在哪端,哪端多删哪端。