Source: dataStruct.js

/**
 * @method
 * @file dataStruct.js
 * @desc For create some data structure.
 * @createDate 2018.7.11.
 * @author yhzheng
 */
"use strict";
/**
 * @class stack
 * @classdesc Data structure: stack
 * @desc Init stack
 */
class stack
{
    constructor(){
        this.value = [];
    }
    /**
     * @method
     * @returns number The top value of stack
     * @desc To get the top value of stack
     */
    top(){
        return this.value[this.value.length - 1];
    }
    /**
     * @methodk
     * @desc To remove the last value of stack
     */
    pop(){
        this.value.splice(this.value.length - 1,1);
    }
    /**
     * @method
     * @param {anyType} value The value of you want to pushed the value
     * @desc To push value
     */
    push(value){
        this.value.push(value);
    }
    /**
     * @method
     * @returns bool The stack is not empty
     * @desc To get the stack is not empty(true or false)
     */
    empty(){
        return this.value.length === 0;
    }
}
/**
 * @class queue
 * @classdesc Data structure: queue
 * @desc Init queue
 */
class queue
{
    constructor(){
        this.value = [];
    }
    /**
     * @method
     * @returns number The front value of queue
     * @desc To get the top value of queue
     */
    front(){
        return this.value[0];
    }
    /**
     * @method
     * @returns number The back value of queue
     * @desc To get the back value of queue
     */
    back(){
        return this.value[this.value.length - 1];
    }
    /**
     * @methodk
     * @desc To remove the last value of queue
     */
    pop(){
        this.value.splice(this.value.length - 1,1);
    }
    /**
     * @method
     * @param {anyType} value The value of you want to pushed the value
     * @desc To push value
     */
    push(value){
        this.value.push(value);
    }
    /**
     * @method
     * @returns bool The queue is not empty
     * @desc To get the queue is not empty(true or false)
     */
    empty(){
        return this.value.length === 0;
    }
}
/**
 * @class priority_queue
 * @classdesc Data structure: priority_queue
 * @desc Init priority_queue
 */
class priority_queue
{
    constructor(){
        this.value = [];
    }
    /**
     * @method
     * @returns number The front value of queue
     * @desc To get the max value of queue
     */
    top(){
        return this.value[getMax()];
    }
    /**
     * @method
     * @returns number The front value of queue
     * @desc To get the top value of queue
     */
    front(){
        return this.value[0];
    }
    /**
     * @method
     * @returns number The back value of queue
     * @desc To get the back value of queue
     */
    back(){
        return this.value[this.value.length - 1];
    }
    /**
     * @method
     * @returns number The index of back value of queue
     * @desc To get the index of back value of queue
     */
    getMax(){
        var index = 0,max = this.value[0];
        for (var i = 1 ; i < this.value.length ; i++){
            if (max < this.value[i]){
                max = this.value[i];
                index = i;
            }
        }
        return index;
    }
    /**
     * @methodk
     * @desc To remove the last value of queue
     */
    pop(){
        this.value.splice(this.getMax(),1);
    }
    /**
     * @method
     * @param {anyType} value The value of you want to pushed the value
     * @desc To push value
     */
    push(value){
        this.value.push(value);
    }
    /**
     * @method
     * @returns bool The queue is not empty
     * @desc To get the queue is not empty(true or false)
     */
    empty(){
        return this.value.length === 0;
    }
}
module.exports.stack = stack;
module.exports.queue = queue;
module.exports.priority_queue = priority_queue;