手撕数据结构—-队列与优先队列
什么是队列(先进先出)
队列,和栈有点类似,但是又不太一样,队列遵循先进先出的原则。
列就是排队,在前面的人先享受服务,完后前面的人先走。
普通队列
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 
 | 
 
 class Queue {
 constructor() {
 this.list = [];
 }
 push(val) {
 return this.list.push(val);
 }
 pop() {
 return this.list.shift();
 }
 peck() {
 return this.list[0];
 }
 size() {
 return this.list.length;
 }
 isEmpty() {
 return this.list.length === 0 ? true : false;
 }
 toString() {
 return this.list.join('');
 }
 }
 
 | 
优先队列
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 
 | 
 
 class QueueNode {
 constructor(data, priority) {
 this.data = data;
 this.priority = priority;
 }
 }
 
 
 
 class PriorityQueue extends Queue {
 constructor() {
 super();
 }
 
 
 
 
 
 push(val, priority = 0) {
 if (!val) throw new Error('need a parameter');
 let newnode = new QueueNode(val, priority);
 let flag = false;
 for (let i = 0; i < this.list.length; i++) {
 if (this.list[i].priority < priority) {
 this.list.splice(i, 0, newnode);
 flag = true;
 return;
 }
 }
 if (!flag) {
 this.list.push(newnode);
 }
 }
 toString() {
 let result = '';
 this.list.forEach((item) => {
 result += '{data:' + item.data + ',priority:' + item.priority + '}';
 });
 return result;
 }
 }
 
 |