游戏开发 34课 typescript 常用的数据结构

以下是常用的数据结构 大伙有需求的话可以拿去用

​​​​​​​

 

export class List<T>{

    private arr: Array<T> = [];

    public constructor(arr?: Array<T>) {

        if (arr) {

            this.arr = arr;

        }

    }

    public Get(index: number): T {

        return this.arr[index];

    }

    public get Count(): number {

        return this.arr.length;

    }

    public Add(data: T) {

        if (data)

            this.arr.push(data);

    }

    public AddRange(arr: Array<T>) {

        if (arr)

            this.arr = this.arr.concat(arr);

    }

    public Clear() {

        while (this.arr.length > 0) {

            this.arr.pop();

        }

    }

    public Remove(data: T): boolean {

        if (data) {

            let index = this.arr.indexOf(data);

            if (index >= 0)

                this.arr.splice(index, 1);

        }

        return false;

    }

    public RemoveAt(index: number): boolean {

        if (index < 0 || index >= this.arr.length)

            return false;

        this.arr.splice(index, 1);

    }

    public Insert(index: number, item: T) {

        this.arr.splice(index, 0, item);

    }

    public Sort() {

        this.arr.sort();

    }

    public Reverse() {

        this.arr.reverse();

    }

    public ToArray(): T[] {

        let result: Array<T> = [];

        result.concat(this.arr);

        return result;

    }

    public Contains(item: T): boolean {

        return this.arr.indexOf(item) >= 0;

    }

    public IndexOf(item: T): number {

        return this.arr.indexOf(item);

    }

    public LastIndexOf(item: T): number {

        return this.arr.lastIndexOf(item);

    }

    public ToString(): string{

        let result:string="";

        for(let item of this.arr){

            result += item + " ";

        }

        return result;

    }

    public Random()

    {

        this.arr.sort(function() { return 0.5 - Math.random(); });

    }

}

export class Queue<T> {

    private arr: Array<T> = [];

    public get Count(): number {

        return this.arr.length;

    }

    public Clear() {

        this.arr = [];

    }

    public Contains(item: T): boolean {

        return this.arr.indexOf(item) >= 0;

    }

    public Dequeue(): T {

        if (this.arr.length <= 0)

            return null;

        let result: T = this.arr[0];

        this.arr.splice(0, 1);

        return result;

    }

    public Enquque(item: T) {

        this.arr.push(item);

    }

    public Peek(): T {

        if (this.arr.length <= 0)

            return null;

        let result: T = this.arr[0];

        return result;

    }

    public ToArray(): T[] {

        let result: Array<T> = [];

        result.concat(this.arr);

        return result;

    }

    public ToString(): string {

        let result: string = "";

        for (let item of this.arr) {

            result += item + " ";

        }

        return result;

    }

}

export class Stack<T>{

    private arr: Array<T> = [];

    public get Count(): number {

        return this.arr.length;

    }

    public Clear() {

        this.arr = [];

    }

    public Contains(item: T): boolean {

        return this.arr.indexOf(item) >= 0;

    }

    public Peek(): T {

        if (this.arr.length <= 0)

            return null;

        return this.arr[0];

    }

    public Pop(): T {

        if (this.arr.length <= 0)

            return null;

        return this.arr.pop();

    }

    public Push(item: T) {

        this.arr.push(item);

    }

    public ToArray(): T[] {

        let result: Array<T> = [];

        result.concat(this.arr);

        return result;

    }

    public ToString():string{

        let result:string="";

        for(let item of this.arr){

            result += item + "";

        }

        return result;

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值