栈是一种先入后出的数据结构,最先进入的元素,却是最后出来,开发中,是否需要用到栈,只要记住它的这条特性就好了,这里我使用之前实现的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; }
/** * 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(); } }
TypeScript数据结构与算法(2)最基础的数据结构-栈
原文:https://www.cnblogs.com/makeamericagreatagain/p/14308227.html