欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 實現隊列

張明哲1年前7瀏覽0評論

在javascript中,隊列是一種常用的數據結構,它的特點是“先進先出”,即先入隊的元素先出隊。實現隊列可以用數組或者鏈表,本文將以數組為例,介紹javascript如何實現隊列。

在javascript中,可以使用數組來實現隊列。我們可以使用push()方法來向隊尾添加元素,使用shift()方法來從隊頭刪除元素,并利用length屬性來獲取隊列長度。下面是一個實現隊列的代碼示例:

class Queue {
constructor() {
this.items = [];
}
enqueue(element) {
this.items.push(element);
}
dequeue() {
return this.items.shift();
}
size() {
return this.items.length;
}
}

我們可以通過實例化Queue類來創建隊列,并使用enqueue()方法將元素添加到隊列中,使用dequeue()方法將隊頭元素刪除,使用size()方法獲取隊列長度。例如:

let queue = new Queue();
queue.enqueue("a");
queue.enqueue("b");
queue.enqueue("c");
console.log(queue.size()); // output: 3
console.log(queue.dequeue()); // output: "a"
console.log(queue.dequeue()); // output: "b"
console.log(queue.size()); // output: 1

除了基本的隊列操作之外,我們可能還需要一些其他的函數來對隊列進行一些高級處理,比如按照優先級進行排序、遍歷隊列等。下面是幾個常用的函數示例:

1.按照優先級進行排序

class PriorityQueue extends Queue {
enqueue(element, priority) {
let queueElement = { element, priority };
if (this.isEmpty()) {
this.items.push(queueElement);
} else {
let added = false;
for (let i = 0; i< this.size(); i++) {
if (queueElement.priority< this.items[i].priority) {
this.items.splice(i, 0, queueElement);
added = true;
break;
}
}
if (!added) {
this.items.push(queueElement);
}
}
}
}

這個示例中,我們創建了一個PriorityQueue類,通過重定義enqueue()函數來按照元素的優先級進行排序,從上面的代碼可以看到,我們在插入元素的時候,首先創建了一個對象來存儲元素和優先級,然后遍歷隊列找到插入位置,最后調用splice()方法來插入元素。

2.遍歷隊列

Queue.prototype.forEach = function(callback) {
for (let i = 0; i< this.size(); i++) {
callback(this.items[i]);
}
}

這個示例中,我們給Queue類添加了一個forEach()函數,用來遍歷隊列,并傳入一個回調函數來對每一個遍歷到的元素進行操作。例:

let queue = new Queue();
queue.enqueue("a");
queue.enqueue("b");
queue.enqueue("c");
queue.forEach(item =>console.log(item));

以上就是javascript實現隊列的一些基本方法,通過它們,我們可以靈活地操作隊列,并實現一些高級的功能。如果遇到其他的需求,我們還可以在此基礎上進行擴展。