算法基础入门-数据结构-链表

326 阅读1分钟

这是我参与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;