javascript 数据结构 之队列

队列是一种集合,队列里的对象按一定的顺序排列 ,遵循先进选出。


function Queue() {
    var count = 0;
    var tail = null;//尾节点
    var head = null;//首节点

    this.GetCount = function () {
        return count;
    }

    /**
     * @param data
     * @method Enqueue
     */
    this.Enqueue = function (data) {
        //创建新 node 对象,存储 data,
        var node = {
            data: data,
            //next 指向当前的 head
            next: head
        }

        //如果 data 是队列的第一个加入的成员,那么它即是head 也是 tail
        if (head === null) {
            tail = node;
        }

        //把新创建的node对象 设置为 head
        head = node;

        count++;
    }

    this.Dequeue = function () {
        if (tail === null) {
            return null;
        } else {
            var current = head;
            var prevous = null;

            while (current.next) {
                prevous = current;
                current = current.next;
            }
            prevous.next = null;
            tail = prevous;

            if (count > 0) {
                count--;
            } else {
                head = null;
                tail = null;
            }
        }
    }

    this.DisplayAll = function () {
        if (head === null) {
            return null;
        } else {
            var arr = [];
            var current = head;

            for (var i = 0; i < count; i++) {
                arr[i] = current.data;
                current = current.next;
            }
            return arr;
        }
    }

    this.PeekAt = function (index) {
        if (index > -1 && index < count) {
            var current = head;

            for (var i = 0; i < index; i++) {
                current = current.next;
            }
            return current.data;
        } else {
            return null;
        }

    }
}


你可能感兴趣的:(JavaScript,数据结构)