TypeScript 实现栈结构的方法与示例

作者:异步漫步

时间:2026-10-31

浏览:584

本文介绍如何使用 TypeScript 实现栈(Stack)数据结构。栈是一种遵循后进先出(LIFO)原则的线性表,仅允许在栈顶进行插入和删除操作。文章详细解析了入栈、出栈、获取栈顶元素、判断空栈、清空栈及获取大小等核心操作,并基于数组封装了完整的 TypeScript 泛型类实现,提供可直接运行的代码示例。

文章目录

栈的定义

栈(Stack):一种仅允许在一端进行插入和删除操作的线性数据结构。作为线性表的一种,其核心特征在于操作受限,且严格遵循后进先出(LIFO)或先进后出(FILO)的原则。

栈顶:指代线性表中执行插入(入栈)或删除(出栈)操作的那一端。

栈的定义

栈的基本操作

  • 入栈:将新元素添加至栈顶位置。
  • 出栈:移除栈顶元素,并返回该被移除的元素值。
  • 获取栈顶元素:读取当前栈顶元素的值并返回,不执行移除操作。
  • 判断栈是否为空:检查栈内是否包含任何数据元素。
  • 清空栈:移除栈内部存储的所有元素,使栈变为空状态。
  • 获取栈的大小:返回当前栈中存储元素的总数量。
  • 打印栈中元素:遍历栈内所有元素并依次输出显示。

功能实现描述

上述操作可借助数组API直接实现: 1. 入栈(push):利用数组的push方法在末尾添加元素。 2. 出栈(pop):利用数组的pop方法移除末尾元素,并返回该元素。 3. 获取栈顶元素(peek):通过访问数组长度减1的索引获取最后一个元素。 4. 判断栈是否为空(isEmpty):检查数组长度是否等于0。 5. 清空栈(clear):将数组重置为空数组,或循环调用pop直至栈空。 6. 获取栈的大小:直接返回数组的length属性值。

代码实现

入栈

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

出栈

 //出栈
    pop(){
        return this.items.pop();
    }

返回栈顶元素

//返回栈顶元素
    peek(){
        return this.items[this.items.length-1];
    }

判断栈是否为空

 //判断栈是否为空
    isEmpty(){
        return this.items.length ? false : true;
    }

清空栈的元素

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

获取栈的大小

 //获取栈内元素数量
    size():number{
        return this.items.length;
    }

输出栈内数据

 print_stack(){
        if(this.isEmpty()) console.log('栈为空');
        for(let i = 0;i < this.items.length;i++){
            console.log(this.items[i]);
        }
    }

测试

let stack_example = new stack();
//添加两个元素
stack_example.push(5);
stack_example.push(6);
//判断是否栈为空
if(stack_example.isEmpty()) {console.log('栈为空')}
else {console.log('栈不为空')}
//打印栈中元素
stack_example.print_stack();
//输出栈中元素数量
console.log('栈中有:'+stack_example.size()+'个元素');
//删除栈顶元素
stack_example.pop()
//再次打印栈中元素
stack_example.print_stack();

测试结果如下:

栈的定义

完整代码实现

//栈的实现
//数组栈
class stack<T>{
    private items:T[]

    constructor(){
        this.items = [];
    }
    //入栈
    push(item:T){
        this.items.push(item);
    }
    //出栈
    pop(){
        return this.items.pop();
    }

    //返回栈顶元素
    peek(){
        return this.items[this.items.length-1];
    }

    //判断栈是否为空
    isEmpty(){
        return this.items.length ? false : true;
    }

    //清空栈的栈内元素
    clear(){
        this.items = [];
    }

    //输出栈内数据
    print_stack(){
        if(this.isEmpty()) console.log('栈为空');
        for(let i = 0;i < this.items.length;i++){
            console.log(this.items[i]);
        }
    }

    //获取栈内元素数量
    size():number{
        return this.items.length;
    }
}

let stack_example = new stack();
//添加两个元素
stack_example.push(5);
stack_example.push(6);
//判断是否栈为空
if(stack_example.isEmpty()) {console.log('栈为空')}
else {console.log('栈不为空')}
//打印栈中元素
stack_example.print_stack();
//输出栈中元素数量
console.log('栈中有:'+stack_example.size()+'个元素');
//删除栈顶元素
stack_example.pop()
//再次打印栈中元素
stack_example.print_stack();

到此这篇关于Typescript实现栈的方法示例的文章就介绍到这了,更多相关Typescript 栈内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章