数据结构中的堆和栈
学过数据结构的猿兄们都知道栈和堆,这可是基本的数据结构了。
栈(stack)先说说栈吧。 栈是一种插入删除只能在一个地方的受限制的线性表。 这个位置就是表的一端(末端),被称为栈顶。 表的另一端称为栈底,栈底是不做处理的。 栈只能在一端插入删除,故而有后进先出(LIFO)的特点。 入栈被称为push,出栈被称为pop。 由于栈是特殊的线性表(都是逻辑结构),那么其存储结构就有顺序和链式两种,称为顺序栈和链栈。
下面分别是我用Java简单实现的两种结构: 顺序栈实现 链栈实现
以Java自身为例,Java就提供了java.util.Stack类,继承自Vector类(也就是说Java直接提供的是顺序栈),提供了下面的方法操作:
- push():入栈
- pop():出栈
- peek():取栈顶元素(不出栈)
- empty():判空
- search(Object o):查找元素位置
更强的Deque接口也可以实现栈的功能(既可以当栈也可以当队列)。 ……