JS数据结构-队列
队列:数据结构
存在两个指针,头指针:front 尾指针:rear
初始状态:
输入过程中:
输出过程:(未画)
方法: 输出: 头指针进行输入
输入:尾指针后添加
<!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>Document</title>
</head>
<body>
</body>
<script>
//队列的模拟 数据的结构
// 队列的特点,先入,先出,有输入,有弹出,弹出的时候,是弹出的那个指。
function Queue() {
//节点类型
const node = function (ele) {
this.ele = ele;
this.next = null;
}
//初始化长度;
this.length = 0;
//有两个指针: 头指针,尾指针
this.front = null;
this.rear = null;
//添加节点。
//两种情况:
//第一种情况:头指针,尾指针指向第一个节点 此刻长度为0;
//第二种情况,长度大于0,头指针不一定,尾指针移动。
this.push = function (ele) {
// 就需要创建一个节点:
let newnode = new node(ele);
if (this.length == 0) {
//头指针,尾指针都指向了第一个节点。
this.front = newnode;
this.rear = newnode;
this.length++;
}
//此刻数组的长度大于0了
else if (this.length > 0) {
this.rear.next = newnode;
this.rear = newnode;
this.length++;
}
}
//队列的输出,
this.pop = function () {
if (this.length == 0) {
console.log("当前队列为空,不能进行输出了");
this.rear = null;
return
}
//记录最前面的节点
let temp = this.front;
this.front = temp.next;
this.length--;
temp.next = null;
if (this.length == 0) {
//此刻是空了,需要将尾指针置空
this.rear = null;
}
return temp;
}
//结果进行存储
this.result = function () {
let result = [];
let flag = this.front
if (!flag) {
console.log(flag);
return
}
//遍历了单链表
while (flag) {
result.push(flag);
flag = flag.next;
}
return result;
};
}
const queue = new Queue();
// queue.push(1);
// queue.push(2);
// queue.pop();
// console.log(queue.front);
// console.log(queue.rear);
// console.log(queue.length);
</script>
</html>