您的位置:首页 > 理论基础 > 数据结构算法

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

2015-11-18 17:45 579 查看
/**
* 队列(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;
}
};
}

// test
var 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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 数据结构