【数据结构入门】如果你学不会数据结构,至少看看这个栈

【数据结构入门】如果你学不会数据结构,至少看看这个栈,第1张

class Stack {
  constructor() {
    this.data = [];
    this.count = 0;
  }
  // input stack
  push(item) {
    // 1. Array push
    // this.data.push(item)
    // 2. Array length
    // this.data[this.data.length] = item
    // 3. count
    this.data[this.count] = item;
    this.count++;
  }

  // output stack
  pop() {
    if (this.isEmpty()) {
      console.log("Stack isEmpty");
      return;
    }
    // 1. Array pop
    // const value = this.data.pop()
    // return value;
    // 2. delete
    // const value = this.data[this.data.length - 1];
    // delete this.data[this.data.length - 1];   //删除掉的值为undefined 还占着位置 this.data.length没有变
    // this.data.length--
    // // 可以合并上两行代码
    // // delete this.data[--this.data.length];
    // return value;
    // 3. Array length - 1 设置 length 属性的值来截断任何数组
    // const value = this.data[this.data.length - 1];
    // this.data.length--;
    // return value;
    // 4. count  可以合并: return this.data[--this.count]
    const value = this.data[this.count - 1];
    this.count--;
    return value;
  }

  top() {
    if (this.isEmpty()) {
      console.log("Stack isEmpty");
      return;
    }

    return this.data[this.count - 1];
  }

  isEmpty() {
    return this.count === 0;
  }

  size() {
    return this.count;
  }

  clear() {
    this.data = [];
    this.count = 0;
  }
}

const s = new Stack();
s.push(1);
s.push(2);
s.push(3);
const top = s.top();
console.log("top: ", top);
const topValue = s.pop();
console.log("topValue: ", topValue);

重点注意:

尽量不使用js自带的方法如果静态语言 要注意出栈的时候判断栈中还有没有值, 入栈的时候要注意开辟的空间是不是够用

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/941676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存