JavaScript数据结构—栈 队列 双端队列

栈(Stack)

栈:又称为堆叠,是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。(来自维基百科)

由于栈后进先出,有操作如下:入栈(push),出栈(pop),获取栈顶元素(peek),JavaScript中Array自带push(), pop()操作,用Array[Array.length-1]来实现peek操作,所以可以用Array实现Stack类型;


栈的实现,采用 ES6
方法说明:

push(element):添加新元素到栈顶
pop():移除栈顶元素,同时返回被移除的元素
peek():返回栈顶元素,不对栈做任何修改
isEmpty():判断栈是否为空
size():返回栈里的元素个数
clear():清空栈

队列(Queue)

队列:又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。(来自维基百科)

由于队列后先进先出,有操作如下:入对(enqueue),出对(dequeue),JavaScript中Array自带push(), shift()操作;


队列的实现,采用ES6
方法说明:

enqueue(element):向队列尾部添加新的项
dequeue():移除队列第一项,同时返回被移除的元素
peek():返回队列中第一个元素,不对栈做任何修改
isEmpty():判断队列是否为空
size():返回队列的元素个数
clear():清空队列

双端队列

双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的抽象数据类型。双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。(来自维基百科)
双端队列把栈和队列相结合,同时遵守了先进先出和后进先出的原则。

双端队列的实现,采用ES6

方法说明:

addFront(element):向双端队列前端添加新的项
addBack(element):向双端队列后端添加新的项
removeFront():从双端队列前端移除第一个元素
removeBack():从双端队列后端移除第一个元素
peekFront():返回双端队列前端第一个元素
peekBack():返回双端队列后端第一个元素

双端队列的应用

下面采用双端队列实现一个回文检查器,算法如下:


回文算法,双端队列实现

你可能感兴趣的:(JavaScript数据结构—栈 队列 双端队列)