其他分享
首页 > 其他分享> > 21-js数据结构——栈

21-js数据结构——栈

作者:互联网

栈是一种高效的数据结构,数据只能在栈顶添加或删除,所以这样操作很快,也很容易实现。栈的使用遍布程序语言实现的方方面面,从表达式求值到处理函数调用。接下来,用JavaScript实现一个栈的数据结构。

定义栈的操作

栈作为一种特殊的列表,只能从一端来进行访问,就像一摞盘子,放只能放在上面,拿也只能从上面拿,所以栈是一种先入后出的一种数据结构。因为栈的这种特点,栈中任意不在栈顶的元素都无法访问,为了得到栈底的元素,必须把该元素之上的元素拿掉,把栈底的元素暴露在栈顶。栈还可以清空其内所有元素,也可以记录栈内元素的个数。

 综上,我们定义几个操作栈的方法。

栈的实现

实现栈,底层的数据结构采用数组,以定义栈的构造函数开始;

function Stack() {
  this.dataStore = []; //用来保存栈内元素的数组
  this.top = 0;       //top用来记录栈顶位置,初始化为0
  this.push = push;
  this.pop = pop;
  this.peek = peek;
  this.clear = clear;
  this.length = length;
}

接下来实现push(),pop(),peek(),clear()和length()。

看代码……

function push(element) {
    this.dataStore[this.top++] = element;   // 先在top位置加入元素,之后top加1
}

function pop() {
    return this.dataStore[--this.top];   // top先减1,然后返回top位置的元素
}

function peek() {
    return this.dataStore[this.top - 1];
}

function clear() {
    this.top = 0;
}

function length() {
    return this.top;
}
const s = new Stack();
s.push("hello");
s.push("youyu");
s.push("js");
const popEle = s.pop();
const peekEle = s.peek();
const topEle = s.top;
s.push("zhan");
const lenEle = s.length();
console.log(`删除的顶部元素是:`, popEle);
console.log(`顶部的元素是:`, peekEle);
console.log("栈内元素个数:", topEle);
console.log("栈内现在的元素个数:", lenEle);
s.clear();
console.log("栈内最后的元素个数:", s.length());

输出结果:

 

 

 

标签:peek,21,top,元素,栈顶,js,length,push,数据结构
来源: https://www.cnblogs.com/haoqiyouyu/p/16054667.html