数据结构 用js实现队列
html代码
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./duilie.js"> </script>
</head>
<body>
一种先进先出的数据结构
<br>
入列 enqueue
<br>
出列 dequeue
<br>
查看列头 front
<br>
使用数组实现队列 排列吃饭
<br>
[1(头),2,3,4,5(队列尾)]
</body>
</html>
js代码
var Queue = function () {
var items = []
//入列
this.enqueue = function (element) {
items.push(element)
}
//出列
this.dequeue = function () {
return items.shift()
}
//js是一门gaoji语言
//查看队列头
this.front = function () {
return items[0]
}
//检查队列是否为空
this.isEmpty = function () {
return items.length == 0
}
//检查队列长度
this.size= function(){
return items.length
}
}
//击鼓传花
var chuanhua = function (names, number) {
var q = new Queue()
for (var i = 0; i < names.length; i++) {
q.enqueue(names[i])
}
//重要部分
var taotai
while (q.size() > 1) {
for (var i = 0; i < number - 1; i++) {
q.enqueue(q.dequeue())
}
taotai = q.dequeue()
console.log('淘汰的玩家是-'+taotai)
}
return q.dequeue()
}
//玩家列表
var names = ['a', 'b', 'c', 'd', 'e', 'f',]//一直穿直到只剩最后一名玩家
//游戏规则
var number = 3
//队列 =》 优先队列
//飞机 高级会员 优先登机
//队列有什么用
//优先队列 priorityQueue
//'小黑' 3
//Object{
// name : xiaohei
// priority : 3
//}
//'小明' 5
//优先队列
var priorityQueue = function(){
var items = []
//辅助类
var QueueItem = function(element,priority){
this.element = element
this.priority= priority
}
this.enqueue = function(element,priority){
var queueItem = new QueueItem(element,priority)
var added = false
for(var i=0;i<items.length;i++){
if(queueItem.priority >items[i].priority){
items.splice(i,0,queueItem)
added =true
break
}
}
if(!added){
items.push(queueItem)
}
}
this.getItems = function(){
return items
}
}
var pq =new priorityQueue()
pq.enqueue('小黑',10)
pq.enqueue('小明',13)
//队列和栈的区别
//栈 是 后进先出
//队列 是 先进先出