栈
栈只允许访问一个数据项:即最后插入的数据项,移除这个数据项后才能访问倒数第二个插入的数据项,依此类推。
[Java示例代码]
栈的效率
数据项入 栈和出 栈的时间复杂度都为常数O(1)。这也就是说, 栈操作所耗的时间不依赖于 栈中数据项的个数,因此操作时间很短。 栈不需要比较和移动操作。
队列
队列有点类似 栈,只是在 队列中第一个插入的数据项会最先被移除(先进先出,FIFO),而在 栈中,最后插入的数据项最先移除(LIFO)。 队列和 栈一样也被用作程序员的工具。它也可以用于模拟真实世界的环境,例如模拟人们在银行里排队等待,或者因特网上数据包等待传送。
[Java示例]
环绕式处理
为了避免 队列不满却不能插入新数据项的问题,可以让队头队尾指针绕回到数组开始的位置,这就是循环 队列,有时也称为缓冲环。
队列的效率
和 栈一样, 队列中插入数据项和移除数据项的时间复杂度均为O(1)。
双端 队列
双端 队列就是一个两端都是结尾的 队列。 队列的每一瑞都可以插入数据项和移除数据项。这些方法可以叫作insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果严格禁止调用insertLeft()和removeLeft()方法(或禁用右段的操作),双端 队列功能就和 栈一样。禁止调用insertLeft()和removeRight()(或相反的另一对方法),它的功能就和 队列一样了。双端 队列与 栈或 队列相比,是一种多用途的数据结构,在 容器类库中有时会用双端 队列来提供 栈和 队列两种功能。
栈只允许访问一个数据项:即最后插入的数据项,移除这个数据项后才能访问倒数第二个插入的数据项,依此类推。
[Java示例代码]
栈的效率
数据项入 栈和出 栈的时间复杂度都为常数O(1)。这也就是说, 栈操作所耗的时间不依赖于 栈中数据项的个数,因此操作时间很短。 栈不需要比较和移动操作。
队列
队列有点类似 栈,只是在 队列中第一个插入的数据项会最先被移除(先进先出,FIFO),而在 栈中,最后插入的数据项最先移除(LIFO)。 队列和 栈一样也被用作程序员的工具。它也可以用于模拟真实世界的环境,例如模拟人们在银行里排队等待,或者因特网上数据包等待传送。
[Java示例]
环绕式处理
为了避免 队列不满却不能插入新数据项的问题,可以让队头队尾指针绕回到数组开始的位置,这就是循环 队列,有时也称为缓冲环。
队列的效率
和 栈一样, 队列中插入数据项和移除数据项的时间复杂度均为O(1)。
双端 队列
双端 队列就是一个两端都是结尾的 队列。 队列的每一瑞都可以插入数据项和移除数据项。这些方法可以叫作insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果严格禁止调用insertLeft()和removeLeft()方法(或禁用右段的操作),双端 队列功能就和 栈一样。禁止调用insertLeft()和removeRight()(或相反的另一对方法),它的功能就和 队列一样了。双端 队列与 栈或 队列相比,是一种多用途的数据结构,在 容器类库中有时会用双端 队列来提供 栈和 队列两种功能。