TypeScript数据结构与算法(2)最基础的数据结构-栈-Stack

栈是一种先入后出的数据结构,最先进入的元素,却是最后出来,开发中,是否需要用到栈,只要记住它的这条特性就好了,这里我使用之前实现的DataStruct_Array类作为栈的底层容器实现,我们都知道对于栈来说,它需要提供给用户以下接口:

1.getSize():获取栈的实际数目

2.isEmpty():判断是否为空栈

3.getCapacity():获取栈的容量

4.push():入栈操作

5.pop():出栈操作(出栈顶元素)

6.peek():查看栈顶是哪位大神

在实现Stack类之前,需要先实现一个接口Interface_Stack,当然接口也是支持泛型的,下面是源码

export interface Interface_Stack<T> {
    getSize(): number;
    isEmpty(): boolean;
    push(e: T): void;
    pop(): T;
    peek(): T;
}
DataStruct_Stack类源码:
/**
* Autor: Created by 李清风 on 2020-12-17.
* Desc: 栈,关键词:先进后出,栈顶,push/peek/pop操作
*/
export class DataStruct_Stack<T> implements Interface_Stack<T> {
    private array: DataStruct_Array<T>;
    public constructor(capacity: number) {
        this.array = new DataStruct_Array<T>(capacity); //当然也有可以有一个默认的无参数的构造器
    }

    //获取栈中存在多少个元素
    public getSize(): number {
        return this.array.getSize();
    }

    //判断是不是空栈
    public isEmpty(): boolean {
        return this.array.isEmpty();
    }

    //获取栈实际容量
    public getCapacity(): number {
        return this.array.getCapacity();
    }

    //入栈操作(压栈操作),数组尾巴就是栈顶,所以这里不能用addFirst
    public push(e: T) {
        return this.array.addLast(e);
    }

    //取栈顶元素(出栈)
    public pop(): T {
        return this.array.removeLast();
    }

    //偷看栈顶元素是哪位大神
    public peek(): T {
        return this.array.getLast();
    }
}

 

 

posted @ 2021-01-21 15:21  CYNLINQ  阅读(369)  评论(0)    收藏  举报