日期:2014-05-16  浏览次数:20380 次

读JSE源码(四)栈和队列

1 总述

1.1栈 stack

定义:栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。

特点:先进后出

基本操作:

入栈push,

出栈pop,

获取栈定元素peek,

判断栈是否为空isEmpty.

实现:栈可以用数组实现,也可以用链表实现。

             栈的链表实现                                     栈的数组实现   

1.2 队列queue

队列:先进先出

基本操作:

add添加元素到队尾

remove移除队头元素

peek获取队头元素

isEmpty方法判断队列是否为空



2 JSE中的实现

Dequeue是JSE定义的双端队列接口(double ended queue),定义了元素可以从两端插入和删除元素。可以利用Dequeue定义的方法实现栈和队列。在使用该接口时可以用对应的方法作为栈或者队列这2种数据结构的操作(下图中左边的方法其实调用了右边方法):



栈和队列的数组实现是ArrayDeque,链表实现是LinkedList。其类关系图如下