数组结构
1.在c语言中数组的使用有两个步骤。首先数组中必须存放相同的数据类型,申请数组的内存空间时,必须指定数组的大小。
2.js优化:采用类似于c语言的方式定义数组。
3.数组的扩容,当你先申明的数组内存空间不足时,此时会生成一个新数组内存是原数组的两倍,将原数组的值一个一个放在新数组中,-----效率低下
4.在数组前面或中间插入或删除元素时,所有元素会位移让出位子来给新元素,因此效率很低。
5.为什么还要使用数组呢,因为数组的查找效率非常高O(1)。
栈
在顶部操作元素,先进后出,后进先出。
js中有调用栈这个概念
标题(()))(()()))()((((())))))(()()()()()()面试题
利用栈结构先存入( 左括号,遇到 ) 右括号是,弹出左括号。
队列
队列先进先出,队列前端只能进行删除操作,后端进行添加操作
队列击鼓传花
class Queue {
constructor() {
this.items = []
}
enqueue(ele) {
this.items.push(ele)
}
dequeue() {
this.items.shift()
}
front() {
if(this.isEmpty() === 0) return null
return this.items[0]
}
isEmpty() {
return this.items.length === 0;
}
size() {
return this.items.length
}
}
function pass(nameList,num) {
const queue = new Queue();
let loss = []
let newq = ''
for(let i = 0;i <nameList.length;i++) {
queue.enqueue(nameList[i])
}
while(queue.size() > 1) {
for(let i =0 ;i < num -1; i++) {
queue.enqueue(queue.dequeue())
}
newq = queue.dequeue()
}
loss.push(newq)
console.log(loss);
return console.log(queue.front());
}
pass(['1','2','3','4','5','6'],4)
优先级队列
链表
链表