🐵指尖猴全新升级
第9课:链表的插入
➕

链表的插入

指针一挥,新节点瞬间入列!

📖知识引入

🪄头插法
新节点next指向原头节点,head再指向新节点,两步完成插入
🎯按位置插入
先找到第i-1个节点(前驱),再让新节点接在它后面
⚠️先连后断
先把新节点连上后继,再让前驱指向新节点,顺序错了链就断
⚡O(1)插入
位置已定时,改两个指针就完成插入,无需挪动其他元素
💡
画图是链表debug神器:先画节点再画箭头,箭头一改对,代码自然对

🔍在p节点后面插入s

// 已有前驱节点 p 和新节点 s
Node* s = new Node{99, nullptr};

// 口诀:先连后断,顺序不能反
s->next = p->next;   // 第1步:s先牵住p的后继
p->next = s;         // 第2步:p改牵s

// 若先写 p->next = s,旧后继就失联了!

两行代码完成插入,这正是链表的高光时刻

🎯小测验

第1题:在p之后插入s的正确顺序是?

第2题:头插法插入新节点后,新节点位于链表什么位置?

第3题:已知插入位置的前驱节点,链表插入的时间复杂度是?

📝本课知识点

  • ✓先连后断是插入铁律
  • ✓头插法两步上首位
  • ✓定位前驱后插入是O(1)
第9课完成!继续探索下一课吧 🚀