数据结构是计算机存储、组织数据的方式,为了高效获取和修改数据
线性结构: 顺序表(数组)和链表 …
为什么要发明链表? => 弥补数组的不足
数组的优缺点?优点查询方便,缺点增删改复杂
链表是如何进行增删改操作的?链表的操作,修改指针域的指向(改变锁链连接的对象)
数组相关代码:V8 引擎 array.js 源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27const start_i = 2
const del_count = 1
const arr = [10, 24, 17, 18, 13, 14, 15, 12, 16, 15, 19, 11]
console.log('原始的数组:', arr);
SimpleMove(arr, start_i, del_count); // 298 line 部分代码
console.log('删除后结果:', arr)
function SimpleMove(array, start_i, del_count) {
const len = arr.length
// 循环数组[17, ..., 11]的部分
for (var i = start_i; i < len - del_count; i++) {
var from_index = i + del_count;
// 从 3号下标数值开始 依次往前移动
array[i] = array[from_index];
}
// delete 操作符 删除多余的部分
for (var i = len; i > len - del_count; i--) {
delete array[i - 1];
}
// 最后修改数组的 length
arr.length = len - del_count
}可以直接 修改数组的 length 从而达到 ArrayPop() 方法的效果吗? 395 line
array[array.length] = val; 和使用 ArrayPush() 差别? 415 line