三、队列
- 名词解释:队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
- 创建队列:
- 数组arr存储队列的元素,类QUeue()含有队列的方法
- 队列的功能:
- enqueue():向队列尾部添加一个或多个元素
enqueue() { let a = arr.get(this) //向对内添加数据 let ele = arguments; if (ele) { for (let i = 0; i < ele.length; i++) { a.push(ele[i]); } } };
- dequeue():移除队列的第一项,并返回被移除的元素。
dequeue() { let a = arr.get(this) return a.shift(); };
- front():根据参数返回队尾元素(1)或队首元素(0)。
front(num) { let a = arr.get(this) if (num === 0) { return a[0]; } else if (num === 1) { return a[a.length - 1]; } console.log('Please enter 0 or 1 !'); };
- isEmpty():判断队列中元素是否存在。
isEmpty() { let a = arr.get(this) return a.length == 0; };
- clear():清空队列的元素。
clear() { let a = arr.get(this) a = []; };
- size():返回队列中的元素个数。
size() { let a = arr.get(this) return a.length; };
- print():在控制台输出栈里的元素。
print() { let a = arr.get(this) console.log(a.toString()); }
- indexOf(): 查找元素是否在栈中,如果存在返回下标,不存在返回false。
indexOf(ele) { let a = arr.get(this) return a.indexOf(ele) != -1 ? a.indexOf(ele) : false; }
- enqueue():向队列尾部添加一个或多个元素
- 优先队列
- 名词解释:队列中元素的添加和修改是基于元素的优先级。
push() { let a = arr.get(this) //向栈内添加数据 let ele = arguments; if (ele) { for (let i = 0; i < ele.length; i++) { if (a.length) { for (let j = 0; j < a.length; j++) { if (ele[i][1] < a[j][1]) { a.splice(j, 0, ele[i]); break } else { a.splice(j + 1, 0, ele[i]) break } } } else { a.push(ele[i]) } } } }; stack.push(['a', 1], ['b', 2], ["c", 1]); //给元素添加优先级,从小到大排列。
- 名词解释:队列中元素的添加和修改是基于元素的优先级。
- 循环队列:队列形成了一个完整的闭环。

浙公网安备 33010602011771号