📜  typescript 中的堆栈函数 \ - TypeScript (1)

📅  最后修改于: 2023-12-03 15:05:39.489000             🧑  作者: Mango

TypeScript中的堆栈函数

在程序中,我们常常需要使用到数据结构,其中堆栈(stack)是其中之一。堆栈是一种后进先出(LIFO)的数据结构,可以用数组或链表来实现。在TypeScript中,我们可以使用数组来实现堆栈。

数组实现堆栈

下面我们来看一个数组实现堆栈的例子:

class Stack<T> {
  private items: T[];

  constructor() {
    this.items = [];
  }

  push(item: T) {
    this.items.push(item);
  }

  pop(): T | undefined {
    return this.items.pop();
  }

  peek(): T | undefined {
    return this.items[this.items.length - 1];
  }

  isEmpty(): boolean {
    return this.items.length === 0;
  }

  clear() {
    this.items = [];
  }

  size(): number {
    return this.items.length;
  }

  toArray(): T[] {
    return this.items.slice();
  }
}

const stack = new Stack<number>();

stack.push(1);
stack.push(2);
stack.push(3);

console.log(stack.pop()); // 3
console.log(stack.pop()); // 2
console.log(stack.peek()); // 1
console.log(stack.size()); // 1
console.log(stack.toArray()); // [1]
解读代码

上述代码使用了泛型来表示堆栈中的数据类型。我们通过private items: T[];来声明堆栈中的数组,在constructor函数中进行初始化。接下来,我们定义了pushpoppeekisEmptyclearsizetoArray等方法。

push(item: T)方法用于向堆栈中添加数据,pop(): T | undefined方法用于从堆栈中取出最后一个数据并移除它,peek(): T | undefined方法用于获取最后一个数据,但是不移除它。

isEmpty(): boolean方法用于判断堆栈是否为空,clear()方法用于清空堆栈中的数据。size(): number方法用于获取堆栈中数据的个数,toArray(): T[]方法用于将堆栈中的数据转换成数组返回。

以上是一个简单的数组实现堆栈的例子,类型安全、易于理解、易于使用、适合小型数据量堆栈的场景。当然,对于大型数据量堆栈,我们需要使用链表实现堆栈。