javascript数据结构与算法——栈
前言:
栈就是和列表类似的一种数据结构,不过栈的特点是'后人先出'。栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样操作很快,而且容易实现。
1. 栈的介绍:
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端被称为栈顶,另一端称为栈底。比如饭店罗盘子,只能从最上面取盘子,盘子洗干净后,也只能罗在做上面。栈被称为一种先入后出的(LIFO)的数据结构。
对栈的两种主要操作是将一个元素压人栈和将一个元素弹出栈。入栈使用push()方法,出栈使用pop()方法。示意图演示了入栈和出栈的过程。pop()方法虽然可以访问栈顶元素,但是调用该方法后,栈顶的元素也从栈中永久被删除。peek()方法则只返回栈顶元素,而不是删除它。
示意图:
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; }