这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战
也许是对于数据处理这个技能自己太匮乏了,也没学习过算法,算是梳理下自己的知识点还有所学吧。
1.链表简介:
- 多个元素组成的列表
- 元素储存不连续,用
next指针连在一起。
1.1数组和链表的区别:
- 数组:增删非收尾元素时,往往需要移动元素
- 链表:增删非收尾元素,不需要移动元素,只需要更改
next的指向即可
2.JS中的链表
JavaScript中没有链表- 可以用
Object模拟链表
2.1-JS模拟链表:
codePart:
//JS模拟链表
//声明多个对象
const Tmc = {val:"1号"};
const iverson = {val:"3号"};
const cart = {val:"15号"};
const kobe = {val:"24号"};
// 建立多个对象之间的联系
Tmc.next = iverson;
iverson.next = cart;
cart.next = kobe;
如上图:
- 从
"1号麦迪"——>"3号艾弗森"——>"15号卡特"——>"24号科比"一层层的通过next关联起来 Tmc为链表的头部
2.2-链表遍历:
codePart:
//继续上面代码
let NBA4Stars = Tmc;
while(NBA4Stars){
console.log("NBA球星:",NBA4Stars.val);
NBA4Stars = NBA4Stars.next;
};
遍历链表步骤:
Step1:声明一个变量,指向链表的头部。(let NBA4Starts = Tmc)
Sept2:不停的在while循环体中重新设置新的自己。(NBA4Starts = NBA4Stars.next)
fn+f5后打开控制台结果如下图:
2.3-链表插入:
现在想要在3号艾弗森和15号卡特之间插入一个12号贾.莫兰特
codePart:
const Morant = {val:"12号"};
iverson.next = Morant;
Morant.next = cart;
cart.next = kobe;
插入操作后结果如下图:
2.4-链表删除:
原理和插入类型,也是改变next指针的指向
删除上面2.3例子中刚刚插入的12号莫兰特
iverson.next = cart;