TS实现一个栈

441 阅读1分钟

前言

栈是比较常见的数据结构,遵循着FIFO(First In First Out)原则。即元素的插入或者删除都是从一端 进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)

栈在生活中比较常见的例子,比如弹夹,最后压入的子弹最先打出去,一开始压入的子弹最后打出。还有米缸,最后加入的大米最先被吃,一开始加入的大米最后吃。

栈如图所示 image.png

我们要实现一下栈的结构,就必须实现以下方法。

  • 入栈 将元素加入栈顶
  • 出栈 将栈顶的元素推出
  • 获取栈顶元素 将栈顶的元素返回,但不在栈中删除
  • 清空栈 清空栈内所有元素
  • 获取栈长度 返回栈的长度
  • 判断栈是否为空 判断栈是否含有元素
  • 输出栈内元素 将栈内的元素用字符串的方式输出

数组方法实现一个栈

class Stach {
  private items: any[];
  constructor() {
    this.items = [];
  }
  //入栈
  push(item: any) {
    this.items.push(item);
  }
  //   出栈
  pop() {
    return this.items.pop();
  }
  //返回栈顶元素
  peek() {
    return this.items[this.items.length - 1];
  }
  //清空栈内元素
  clear() {
    this.items = [];
  }
  //获取长度
  size() {
    return this.items.length;
  }
  //判断栈是否为空
  isEmpty() {
    return this.items.length === 0;
  }
  //站内元素字符串输出
  toString() {
    return this.items.toString();
  }
}

由于items是用数组,所以他的时间复杂度为O(n)

下次介绍用对象实现一个栈。