使用JavaScript实现队列的相关入队、出队、获取队头、判空的操作

首先,什么是队列?

队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。

队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。

来自维基百科

其实,通过上面的话可以知道,队列在JavaScript代表的是数组

队列的基本运算

  • 初始化队列:Init_Queue(q) ,初始条件:队q 不存在。操作结果:构造了一个空队;

  • 入队操作:In_Queue(q,x),初始条件:队q 存在。操作结果: 对已存在的队列q,插入一个元素x 到队尾,队发生变化;

  • 出队操作:Out_Queue(q,x),初始条件: 队q 存在且非空,操作结果: 删除队首元素,并返回其值,队发生变化;

  • 读队头元素:Front_Queue(q,x),初始条件: 队q 存在且非空,操作结果: 读队头元素,并返回其值,队不变;

  • 判队空操作:Empty_Queue(q),初始条件: 队q 存在,操作结果: 若q 为空队则返回为1,否则返回为0

我们今天来用JavaScript实现 队列的相关入队、出队、获取队头、判空一系列操作,复习一遍数组的使用

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS队列</title>
</head>
<body>
<input id="queue-input" type="text">
<p id="queue-cont">队列内容:apple-&gt;pear</p>
<button onclick="inQueue()" id="in-btn">入队</button>
<button onclick="outQueue()" id="out-btn">出队</button>

<script>

let el = document.querySelector('#queue-cont')
let Input = document.querySelector('#queue-input')
let queue = ["apple", "pear"];

function inQueue() {
el.innerHTML = In_Queue(queue, Input.value).join('->')
}

function outQueue() {
el.innerHTML = Out_Queue(queue)
}

//入队
function In_Queue(q, x) {
isErr(q)
q.push(x)
return q
}

// 出队
function Out_Queue(q) {
isErr(q)
q.shift()
return q
}

// 打印队头元素内容
function Front_Queue(q) {
isErr(q)
return q.slice(0, 1)
}

// 判断队列是否为空
function Empty_Queue(q) {
if (!q.length) {
return 1
}
return 0
}

// common fun
function isErr(q) {
if (!q) {
throw "q为空";
}
}


</script>
</body>
</html>
分享到