本文在阅读大话数据结构这本书的基础上,结合java语言的特点,来理解栈和队列。
栈与队列的定义
栈是限定仅在表尾进行插入和删除操作的线性表。(类似弹夹中的子弹)
队列是只允许在一端进行插入操作、而在另一端进行删除操作的线性表。(类似等待客服电话排队)
栈
栈本身也是一种线性表,除了删除和添加改名为pop(弹)和push(压),抽象功能没有特别的地方。需要注意一点是java的sdk继承vector实现的stack,相关操作使用synchronized,具有安全性。
栈的顺序存储结构(顺序栈)
1 | /** |
栈的链式存储结构(链栈)
1 | /** |
队列
队列本身也是一种线性表,不同的是插入只能是队尾,删除只能是队首。
队列的顺序存储结构
顺序队列
1 | /** |
循环队列
1 | /** |
队列的链式存储结构
1 | public class LinkQueue<E> { |