欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构-JavaScript实现顺序队列和双向队列

程序员文章站 2024-03-16 16:09:28
...
// 顺序队列,使用了js里的Array
 class Queue {
        data: any[];
        size: number;
        constructor(maxlength: number) {
            this.data = [];
            this.size = maxlength;
        }
        push(value: any) {
            if (this.getLength() < this.size) {
                this.data.push(value);
                return;
            }
            console.error('The queue is full!');
        }
        out(): any {
            if (!this.isEmpty()) {
                return this.data.shift();
            }
        }
        getLength(): number {
            return this.data.length;
        }
        isEmpty() {
            return this.data.length === 0;
        }
        clear() {
            this.data.length = 0;
        }
        print() {
            for (const iterator of this.data) {
                console.log(iterator)
            }
        }
    }
    // 双向队列
    // 其实就是多了一个头部入队和尾部出队的方法
    class Dique {
        data: any[];
        size: number;
        constructor(maxlength: number) {
            this.data = [];
            this.size = maxlength;
        }
        /**
         * 头部入队
         * @param value 要插入的值
         */
        headPush(value: any) {
            if (this.getLength() < this.size) {
                this.data.unshift(value);
                return;
            }
            console.error('The queue is full!');
        }
        /**
         * 尾部入队
         * @param value 要插入的值
         */
        tailPush(value: any) {
            if (this.getLength() < this.size) {
                this.data.push(value);
                return;
            }
            console.error('The queue is full!');
        }
        /**
         * 头部出队
         */
        headOut(): any {
            if (!this.isEmpty()) {
                return this.data.shift();
            }
        }
        /**
         * 尾部出队
         */
        tailOut(): any {
            if (!this.isEmpty()) {
                return this.data.pop();
            }
        }
        getLength(): number {
            return this.data.length;
        }
        isEmpty() {
            return this.data.length === 0;
        }
        clear() {
            this.data.length = 0;
        }
        print() {
            for (const iterator of this.data) {
                console.log(iterator)
            }
        }
    }