当前位置: 首页 > news >正文

在常量时间内实现单向链表的插入与删除

在常量时间内实现单向链表的插入与删除操作

实现单向链表的插入与删除操作,常规方法是遍历,时间复杂度是\(O(N)\)。我们可以通过改变当前节点的下一个节点来实现单向链表的插入与删除操作,这样时间复杂度就是\(O(1)\)。示意图如下:

在常量时间内单向链表实现插入与删除操作

对于后位插入,我们通常可以忽略,因为这对双向链表与单向链表都很简单。示意图中主要展示前位插入。插入与删除的代码:

iterator insert( iterator itr, const Object & x )
{++theSize;Node * p = itr.current;p->next = new Node{ p->data, p->next };p->data = x;if( itr == end( ) )tail = tail->next;return { p->next };
}
iterator erase( iterator itr )
{--theSize;Node * p = itr.current;Node * d = p->next;p->data = p->next->data;p->next = p->next->next;delete d;return itr;
}

iterator是内置的迭代器。整个操作的重点是副本,灵活运用副本,因为单向链表无法回溯到前一个节点。

http://www.vanclimg.com/news/1152.html

相关文章:

  • cpp的单头文件
  • 每日题单
  • 在ubuntu系统下构建azerothcore服务端遇到的问题
  • 狂神说Java|Java基础
  • 2-2 点灯例程(寄存器开发) - LI,Yi
  • 【Datawhale AI夏令营--task2】科大讯飞AI大赛(大模型技术)
  • 记录一次vue3+mqtt.js连接华为云mqtt的成功经历
  • 基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
  • 开发集合控件的拖拽流程优化——以TreeView为例
  • 第七天
  • 付老师名言
  • [羊城杯 2021]Baby_Forenisc-内存取证-Volatility 2工具下载使用- Volatility 2.6 的 Linux 免安装版(Standalone 版本)
  • 北大 2024 强基数学
  • 【ESP8266】Vscode + platformIo + Esp8266 新建工程 关键步骤
  • Revo Uninstaller Pro专业版领取:2025最佳Windows软件卸载工具
  • Datawhale AI夏令营 Dify入门 Task05 智能客服
  • PlantUML绘制时序图
  • helm环境快速部署实战
  • 用 Python 实现多干扰线图像验证码的识别系统
  • Python 实现多干扰线图像验证码识别
  • 学习链接
  • 03Gin中间件开发与鉴权实践
  • 入门
  • 浅析扫描线
  • CRUD
  • I2C
  • 小新Pad2022刷机记录
  • 最左前缀原则和覆盖索引相关问题
  • 【LeetCode 142】算法:环形链表 II
  • Gin框架介绍