js实现复杂数据结构之Stack

前言

Stack是一种特殊的列表,具有后入先出的特点,任何不在栈顶的元素都无法访问,要得到栈底的元素,必须先拿掉上面的元素。

定义

首先我们还是先对Stack进行定义以及抽象,本例仍然使用数组作为数据源

1.属性

  • 数据源
    _dataSource
  • 栈顶在数组的位置
    top

2.方法

  • 入栈
    push
  • 出栈
    pop
  • 返回栈顶元素
    peek
  • 返回栈内元素个数
    getSize
  • 清空栈
    clear

实现Stack类

class Stack<T>{
  private _dataSource: Array<T>;
  private _top: number;

  constructor() {
    this._top = 0;
    this._dataSource = [];
  }
  public push = () => { }
  public pop = () => { }
  public peek = () => { }
  public clear = () => { }
  public getSize = () => { }
}

实现方法

  • push
    向数组中添加元素,并让top增加
public push = (element: T): void => {
    this._dataSource.push(element);
    this._top++;
  }
  • pop
    向数组中删除元素,并让top减少
public pop = (): T => {
    this._top--;
    return this._dataSource.pop();
  }
  • peek
    返回栈顶元素
public peek = (): T => {
    return this._dataSource[this._top - 1];
  }
  • getSize
    返回栈内元素个数
public getSize = (): number => this._top;
  • clear
    清空栈
public clear = (): void => {
    this._top = 0;
    this._dataSource = [];
  }

完整实例请见github

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容