UNPKG

jslib-tools

Version:

js工具库 封装常用的工具函数 如深拷贝 时间转换日期格式化、浏览器判断等,提高开发效率

120 lines (108 loc) 2.33 kB
export class ArrayQueue { private arr: any[]; private maxLength: number | void; /** * @param {number} len 最大数据存储量 */ constructor(len?: number) { this.arr = new Array(); this.maxLength = len; } /** * 入队 * @param target */ push(target: any): boolean { if (this.maxLength && this.arr.length >= this.maxLength) return false; this.arr.push(target); return true; } /**出队 */ pop(): any { return this.arr.shift(); } /**队首 */ getFront(): any { return this.arr[0]; } /**队尾 */ getRear(): any { if (this.size() === 0) return return this.arr[this.size() - 1] } clear(): void { this.arr = []; } size(): number { return this.arr.length; } _getAll(): any[] { return this.arr; } } class Node { private ele: any; private next: any; constructor(ele: any) { this.ele = ele; this.next = null } getValue(): object { return { ele:this.ele, next:this.next, } } } export class LinkedQueue { private length: number = 0; private front: any; // 队首指针 private rear: any; // 队尾指针 push(ele: any): boolean { let node = new Node(ele), temp; if (this.length == 0) this.front = node; else { temp = this.rear; temp.next = node; } this.rear = node; this.length++; return true; } pop(): any { let temp = this.front; this.front = this.front.next this.length--; temp.next = null return temp; } size(): number { return this.length; } getFront(): any { return this.front; } getRear(): any { return this.rear; } toString(): string { let string: string = '', temp: any = this.front; while (temp) { string += temp.ele + ' '; temp = temp.next; } return string; } clear(): boolean { this.front = null; this.rear = null; this.length = 0; return true } } export default { ArrayQueue, LinkedQueue }