数据结构与算法--栈(TypeScript)

文章介绍了如何用TypeScript定义和实现Stack接口以及ArrayStack类,随后展示了两个示例:将十进制数转换为二进制和检查字符串中的括号是否有效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义栈

Stack.ts

interface IStack<T> {
  push(element: T): void;
  pop(): T | undefined;
  peek(): T | undefined;
  isEmpty(): boolean;
  size(): number;
}
class ArrayStack<T = any> implements IStack<T> {
  private stack: T[];
  constructor() {
    this.stack = [];
  }
  push(element: T): void {
    this.stack.push(element);
  }
  pop(): T | undefined {
    return this.stack.pop();
  }
  peek(): T | undefined {
    return this.stack[this.stack.length - 1];
  }
  isEmpty(): boolean {
    return this.stack.length === 0;
  }
  size(): number {
    return this.stack.length;
  }
}
export { ArrayStack };

应用

十进制转二进制

DecimalToBinary.ts

import { ArrayStack } from "./Stack";
function DecimalToBinary(decimal: number): string {
  const stack = new ArrayStack<number>();
  while (decimal > 0) {
    let result = decimal % 2;
    stack.push(result);
    decimal = Math.floor(decimal / 2);
  }
  let binary = "";
  while (!stack.isEmpty()) {
    binary += stack.pop();
  }
  return binary;
}

console.log(DecimalToBinary(15))

有效的括号

IsValid.ts

import { ArrayStack } from "./Stack";
function isValid(str: string): boolean {
  let stack = new ArrayStack<string>();
  for (let i = 0; i < str.length; i++) {
    let c = str[i];
    switch (c) (c) {
      case "(":
        stack.push(")");
        break;
      case "{":
        stack.push("}");
        break;
      case "[":
        stack.push("]");
        break;
      default:
        if (c != stack.pop()) return false;
        break;
    }
  }
  if (!stack.isEmpty()) {
    return false;
  }
  return true;
}
console.log(isValid("()(){}[]"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值