From f68877a5903d60b4aca76d5a56306b192c134b99 Mon Sep 17 00:00:00 2001 From: blobt Date: Wed, 31 Mar 2021 14:57:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E9=98=9F=E5=88=97=E5=92=8C?= =?UTF-8?q?=E6=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/AdapterBase.ts | 41 +++++++++++++++++++++++++++++++++++++++++ src/IAdapter.ts | 8 ++++++++ src/Queue.ts | 17 +++++++++++++++++ src/Stack.ts | 11 +++++++++++ 4 files changed, 77 insertions(+) create mode 100755 src/AdapterBase.ts create mode 100755 src/IAdapter.ts create mode 100755 src/Queue.ts create mode 100755 src/Stack.ts diff --git a/src/AdapterBase.ts b/src/AdapterBase.ts new file mode 100755 index 00000000..e4dee89d --- /dev/null +++ b/src/AdapterBase.ts @@ -0,0 +1,41 @@ +import { IAdapter } from "./IAdapter"; +import { List } from "./List"; + +export abstract class AdapterBase implements IAdapter { + + protected _arr: Array | List; + + constructor(useList: boolean = true) { + if (useList) { + this._arr = new List(); + } else { + this._arr = new Array(); + } + } + + public add(t: T): void { + this._arr.push(t); + } + + /** + * 弹出顶部元素 + */ + public abstract remove(): T | undefined; + + public get length(): number { + return this._arr.length; + } + + public get isEmpty(): boolean { + return this._arr.length <= 0; + } + + clear(): void { + if(this._arr instanceof List){ + this._arr = new List(); + } else { + this._arr = new Array(); + } + } + +} \ No newline at end of file diff --git a/src/IAdapter.ts b/src/IAdapter.ts new file mode 100755 index 00000000..91ddbe7f --- /dev/null +++ b/src/IAdapter.ts @@ -0,0 +1,8 @@ +export interface IAdapter { + add(t: T): void; + remove(): T | undefined; + clear(): void; + //属性 + length: number; + isEmpty: boolean; +} \ No newline at end of file diff --git a/src/Queue.ts b/src/Queue.ts new file mode 100755 index 00000000..b1ef6986 --- /dev/null +++ b/src/Queue.ts @@ -0,0 +1,17 @@ +import { AdapterBase } from "./AdapterBase"; +import { List } from "./List"; + +export class Quene extends AdapterBase{ + public remove(): T | undefined { + if (this._arr.length > 0) { + if (this._arr instanceof List) { + return this._arr.pop_front(); + } else { + return this._arr.shift(); + } + } else { + return undefined; + } + } + +} \ No newline at end of file diff --git a/src/Stack.ts b/src/Stack.ts new file mode 100755 index 00000000..97561513 --- /dev/null +++ b/src/Stack.ts @@ -0,0 +1,11 @@ +import { AdapterBase } from "./AdapterBase"; + +export class Stack extends AdapterBase{ + public remove(): T | undefined { + if(this._arr.length > 0){ + this._arr.pop(); + } + return undefined; + } + +} \ No newline at end of file