JavaScript 中的队列数据结构
在本文中,我们将讨论 JavaScript 中的队列数据结构。它是一个线性数据结构,其中元素的入队和出队遵循 FIFO(先进先出顺序)。队列两端是开放的。一端始终用于插入数据,另一端用于删除数据。在这里,我们使用两个指针后端和前端。后端用于插入数据,前端用于删除数据。
队列的现实示例可以是单车道单行道,其中车辆先进入,先退出。
下图显示了队列的工作原理 −
示例 1
以下示例演示如何在 JavaScript 中实现队列类数据结构。我们还将展示队列的 enqueue()、peek() 和 size() 方法的使用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Queue Data Structure</title>
</head>
<body>
<script type="text/javascript">
class Queue {
constructor() {
this.queArr = [];
this.frontIdx = 0; //head
this.rearIdx = 0; //tail
}
enqueue(elem) {
this.queArr[this.rearIdx] = elem;
this.rearIdx++;
}
dequeue() {
if (this.isEmpty()) {
document.write("Queue Underflow..!</br>");
return;
}
let elem = this.queArr[this.frontIdx];
delete this.queArr[this.frontIdx];
this.frontIdx++;
return elem;
}
peek() {
return (
"The peek element of the Queue is : " +
this.queArr[this.frontIdx] +
"</br>"
);
}
size() {
document.write("The size of the Queue is : ");
return this.rearIdx - this.frontIdx;
}
isEmpty() {
document.write("<br>");
return this.queArr.length == 0;
}
display() {
if (this.queArr.length !== 0) {
return "The Queue elements are : " + this.queArr + "</br>";
} else {
document.write("The Queue is Empty..! <br>");
}
}
clear() {
document.write("</br>The Queue is cleared..!" + "<br>");
this.queArr = [];
}
}
let queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
document.write(queue.display());
document.write(queue.peek());
document.write(queue.size());
</script>
</body>
</html>
示例 2
以下示例演示如何在 JavaScript 中实现队列类数据结构。并且还讨论如何对队列元素执行各种操作,以修改或检查队列的状态。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Queue Data Structure</title>
</head>
<body>
<script type="text/javascript">
class Queue {
constructor() {
this.queArr = [];
this.frontIdx = 0; //head
this.rearIdx = 0; //tail
}
enqueue(elem) {
this.queArr[this.rearIdx] = elem;
this.rearIdx++;
}
dequeue() {
if (this.isEmpty()) {
document.write("Queue Underflow..!</br>");
return;
}
let elem = this.queArr[this.frontIdx];
delete this.queArr[this.frontIdx];
this.frontIdx++;
return elem;
}
peek() {
return (
"The peek element of the Queue is : " +
this.queArr[this.frontIdx] +
"</br>"
);
}
size() {
document.write("The size of the Queue is : ");
return this.rearIdx - this.frontIdx;
}
isEmpty() {
document.write("<br>");
return this.queArr.length == 0;
}
display() {
if (this.queArr.length !== 0) {
return "The Queue elements are : " + this.queArr + "</br>";
} else {
document.write("The Queue is Empty..! <br>");
}
}
clear() {
document.write("</br>The Queue is cleared..!" + "<br>");
this.queArr = [];
}
}
let queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
document.write(queue.display());
document.write(queue.peek());
document.write(queue.size());
queue.clear();
queue.display();
</script>
</body>
</html>
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP