JavaScript 数据结构(2):队列 Queue

来源:互联网 发布:北京匡恩网络 待遇 编辑:程序博客网 时间:2024/06/06 08:27
/** * 队列(Queue) * 先进先出 */// Array 实现/*function Queue () {    var arr = [];    return {        insert: function(item){     // 入列            arr.push(item);        },        remove: function(){     // 出列            return arr.shift();        },        peek: function(){       // 查看队头元素            return arr[0];        },        isEmpty: function(){        // 队列是否为空            return arr.length === 0;        },        size: function(){       // 队列中元素数目            return arr.length;        }    };}*/// Object 实现function Queue () {    var queue = {},        front = 0,        end = -1,        size = 0;    return {        insert: function(item){     // 入列            queue[++end] = item;            size++;        },        remove: function(){     // 出列            if(size == 0){                return undefined;            }else{                var frontItem = queue[front++];                size--;                return frontItem;            }        },        peek: function(){       // 查看队头元素            return queue[front];        },        isEmpty: function(){        // 队列是否为空            return size === 0;        },        size: function(){       // 队列中元素数目            return size;        }    };}// testvar queue = new Queue();console.log('Is empty? ' + queue.isEmpty());console.log('size: ' + queue.size());queue.insert(1);queue.insert(2);console.log('size: ' + queue.size());console.log('peek: ' + queue.peek());console.log('remove: ' + queue.remove());console.log('peek: ' + queue.peek());console.log('Is empty? ' + queue.isEmpty());console.log('size: ' + queue.size());
0 0