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