JavaScript数据结构基础学习三
JavaScript数据结构基础学习
什么是列表和表格数据结构
列表List
- 值的集合,例如数组、集合(Set) 、链表
- 适合存储通过位置(索引或搜索)检索的值,比较适合循环
表格Tables
- 键值对的集合,例如对象、映射Map()
- 适合存储通过键检索的值,不关注循环。实际应用比如:用身份证号或工号查询某个人的身份信息
列表
堆栈&队列
堆栈和队列都是简化的数组
堆栈先进后出,队列先进先出
自定义堆栈
class Stack{
constructor(){
this.items = [];
}
// 栈顶
push(value){
this.items.push(value)
}
// 栈底
pop(){
this.items.pop()
}
isEmpty(){
return this.items.length === 0
}
toArray(){
return this.items.slice()
}
}
自定义队列
class Queue{
constructor(){
this.items = []
}
enqueue(value){
this.items.unshift(value)
}
dequeue(){
this.items.pop()
}
isEmpty(){
return this.items.length === 0
}
toArray(){
return this.items.slice()
}
}
表格
const citizens = {
'123':{
name:"lily",
age:18,
sex:"female",
address:"xx省xx市xx区xx街道"
}
}
通过 键值可以查找一整个数据体
堆栈、队列时间复杂度VS数组时间复杂度
堆栈 | 队列 | 数组 | |
---|---|---|---|
元素访问 | O(1)仅限于栈顶元素 | O(1)仅限于第一个元素(队列头) | O(1) |
末尾插入 | O(1) | O(n)会导致数据丢失 | O(1) |
头部插入 | O(n) 会导致数据丢失 | O(1) | O(n) |
中间插入 | O(n)会导致数据丢失 | O(n)会导致数据丢失 | O(n) |
元素搜索 | O(n)会导致数据丢失 | O(n)会导致数据丢失 | O(n) |
数据丢失原因:会先出栈再入栈,数据有可能丢失,队列同理