javascript数据结构与算法——栈

时间:2023-03-09 07:51:32
javascript数据结构与算法——栈

前言:

  栈就是和列表类似的一种数据结构,不过栈的特点是'后人先出'。栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样操作很快,而且容易实现。

1. 栈的介绍:

  栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端被称为栈顶,另一端称为栈底。比如饭店罗盘子,只能从最上面取盘子,盘子洗干净后,也只能罗在做上面。栈被称为一种先入后出的(LIFO)的数据结构。

  对栈的两种主要操作是将一个元素压人栈和将一个元素弹出栈。入栈使用push()方法,出栈使用pop()方法。示意图演示了入栈和出栈的过程。pop()方法虽然可以访问栈顶元素,但是调用该方法后,栈顶的元素也从栈中永久被删除。peek()方法则只返回栈顶元素,而不是删除它。

  示意图:

javascript数据结构与算法——栈

2. 栈的实现

/*
* 1. 构造一个函数将其初始化为一个空数组。
* 2. top记录栈顶位置,被构造函数初始化为0,表示栈顶对应的数组起始位置为0,
* 如果有元素被压入栈,该变量也随之增加;被弹出栈,该变量随之减小
* */
function Stack() {
this.dataStore = [];
this.top = 0;
this.push = push;
this.pop = pop;
this.peek = peek;
this.clear = clear;
this.length = length;
}
function push(element) {
return this.dataStore[this.top++] = element;
}
function pop() {
return this.dataStore[--this.top];
}
function peek() {
return this.dataStore[this.top-1]
}
function length() {
return this.top
}
function clear() {
this.top = 0;
}