Освоение операций со стеком в TypeScript: подробное руководство

Стеки представляют собой фундаментальную структуру данных в информатике и широко используются в программировании. В этой статье блога мы рассмотрим структуру данных стека и обсудим различные методы управления стеками в TypeScript. Независимо от того, являетесь ли вы новичком или опытным разработчиком, это руководство поможет вам понять операции со стеком и предоставит практические примеры кода на TypeScript.

Понимание структуры данных стека.
Прежде чем углубляться в методы, давайте быстро разберемся, что такое стек. Стек — это упорядоченный набор элементов, в котором добавление и удаление элементов осуществляется по принципу «последним пришел — первым вышел» (LIFO). Думайте об этом как о стопке тарелок, из которой тарелка, поставленная последней, убирается первой.

Создание стека в TypeScript:
Чтобы создать стек в TypeScript, мы можем использовать встроенную структуру данных массива и определить некоторые вспомогательные методы. Вот базовая реализация:

class Stack<T> {
  private items: T[];
  constructor() {
    this.items = [];
  }
// Method 1: Push an item onto the stack
  push(item: T): void {
    this.items.push(item);
  }
// Method 2: Pop an item from the stack
  pop(): T | undefined {
    return this.items.pop();
  }
// Method 3: Peek the top item without removing it
  peek(): T | undefined {
    return this.items[this.items.length - 1];
  }
// Method 4: Check if the stack is empty
  isEmpty(): boolean {
    return this.items.length === 0;
  }
// Method 5: Get the size of the stack
  size(): number {
    return this.items.length;
  }
// Method 6: Clear the stack
  clear(): void {
    this.items = [];
  }
}
// Example usage
const stack = new Stack<number>();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.pop()); // Output: 3
console.log(stack.peek()); // Output: 2
console.log(stack.isEmpty()); // Output: false
console.log(stack.size()); // Output: 2
stack.clear();
console.log(stack.isEmpty()); // Output: true

Изучение дополнительных методов стека.
Теперь, когда у нас есть базовая реализация стека, давайте рассмотрим некоторые дополнительные методы, которые могут улучшить функциональность нашего стека:

  1. Метод 7: toArray(): преобразует стек в массив.
  2. Метод 8: fromArray(array: T[]): создает стек из существующего массива.
  3. Метод 9: contains(item: T): проверяет, существует ли элемент в стеке.
  4. Метод 10: toString(): преобразует стек в строковое представление.
  5. Метод 11: clone(): Создает неглубокую копию стека.
  6. Метод 12: toArrayReversed(): преобразует стек в массив в обратном порядке.