队
<div id="screen" style="border: 1px solid black; width: 200px; height: 200px;"></div>
<div class="actions">
<button id="createNumber">取号</button>
<button id="callNumber">叫号</button>
</div>
<div>
当前号码<span id="newNumber"></span>
</div>
<div>
当前队列<span id="queue"></span>
</div>
<script>
const divScreen = document.querySelector("#screen");
const btnCreateNumber = document.querySelector("#createNumber");
const btnCallNumber = document.querySelector("#callNumber");
const spanNewNumber = document.querySelector("#newNumber");
const spanQueue = document.querySelector("#queue");
let n = 0;
let queue = [];
btnCreateNumber.onclick = () => {
n += 1;
queue.push.call(queue, n);
spanNewNumber.innerText = n;
spanQueue.innerText = JSON.stringify(queue);
};
btnCallNumber.onclick = () => {
if (queue.length === 0) {
return;
}
const m = queue.shift.call(queue);
divScreen.innerText = `请${m}号就餐`;
spanQueue.innerText = JSON.stringify(queue);
};
</script>
栈
function f1() {
let a = 1;
return a + f2();
}
function f2() {
let b = 2;
return b + f3();
}
function f3() {
let c = 3;
return c
}
console.log(f1());
链表
const createList = value => {
return createNode(value);
const appendList = (List, value) => {
const node = createNode(value);
let x = list;
while (x.next) {
x = x.next;
}
x.next = node;
return node;
const removeFromList = (list, node) => {
let x = list;
let p = node;
while (x !== node && x !== null) {
p = x;
x = x.next;
}
if (x === null) {
return false;
} else if (x === p) {
p = x.next;
return p;
} else {
p.next = x.next;
return list;
}
const createNode = value => {
return {
data: value,
next: null
};
const travelList = (list, fn) => {
let x = list;
while (x !== null) {
fn(x);
x = x.next;
}
const list = createList(10);
const node2 = appendList(list, 20);
const node3 = appendList(list, 30);
const node4 = appendList(list, 40);
travelList(list, node => {
console.log(node.data);
});
removeFromList(list, node2);
console.log(list);