本文在阅读大话数据结构这本书的基础上,结合java语言的特点,来理解栈和队列,代码均为自己实现。
栈与队列
栈是限定仅在表尾进行插入和删除操作的线性表。(类似弹夹中的子弹)
队列是只允许在一端进行插入操作、而在另一端进行删除操作的线性表。(类似等待客服电话排队)
栈的抽象数据类型
栈本身也是一种线性表,除了删除和添加改名为pop(弹)和push(压),抽象功能没有特别的地方。为了方便实现我们还是自定义栈的接口
,另外注意一点是java的sdk继承vector实现的stack,相关操作使用synchronized,具有安全性。
|
|
栈的顺序存储结构(两栈共享空间)
|
|
|
|
|
|
|
|
栈的链式存储结构
|
|
|
|
队列的抽象数据类型
队列本身也是一种线性表,不同的是插入只能是队尾,删除只能是队首,抽象功能同样没有特别的地方。
|
|
队列的顺序存储结构(循环队列)
循环队列指队列的首尾相接的顺序存储结构。
|
|
|
|
队列的链式存储结构
|
|
|
|