数据结构的相关知识,内容包括队列、栈、链表、哈希表、树、数据结构的简单。
一、队列 Queue
「先进先出 FIFO」的数组
举例: 一个餐厅叫号功能,点击「取号」按钮生成一个号码,点击「叫号」按钮显示「请 X 号就餐」
代码: 首先选择队列 queue 作为数据结构,queue.push 为入队 / queue.shift 为出队
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()
queue.push.call(queue,n)
spanNewNumber.innerText = n
spanQueue.innerText =JSON.stringify(queue)
}
btnCallNumber.onclick = ()=>{
if (queue.length === 0){return}
let m = queue.shift.call(queue)
spanQueue.innerText = JSON.stringify(queue)
divScreen.innerText = `请${m}号就餐`
}

二、栈 Stack
「后进先出 LIFO」的数组
举例: JS 函数的调用栈 call stack 就是一个栈,假设 f1 调用了 f2,f2 又调用了 f3,那么 f3 结束后应该回到 f2,f2 结束后应该回到 f1
代码:
function f1(){let a = a; return a+f2()}
function f2(){let b = 2; return b+f2()}
function f2(){let c = 3; return c}
f1()
三、链表 Linked List
一个链一个
举例:
date: 1
next: #124
——————————
date: 2
next: #241
——————————
date: 3
next: null
实际使用:
let array = [1,2,3]
array.__proto__ === Array.prototype
Array.protype.__proto__ === Object.prototype
链表的变形
- 双向链表:每个节点有一个 previous 指向上一个节点
- 循环链表:最后一个节点的 next 指向头节点
四、哈希表 key-value pairs
多个对多个
哈希表的难点在于哈希二字(不是嘻哈),这里有一篇文章有兴趣可以看看 →「哈希表」是什么?
五、树 Tree
一个链多个
实际使用: 中国的省市区、公司的层级结构、网页中的节点都可以看成一棵树
代码:
let tree = createTree(value)
let node = createNode(value)
addChild(tree,node)
removeChild(node1,node)
travel(tree)
六、数据结构的简单
它的简单在于它的每一句话你都看得懂,但合起来看不懂
「资料来源:©饥人谷」