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

基础数据结构第04天:单向链表(概念篇)

 

目录

单向链表的概念

单向链表的元素插入

单向链表的元素删除

单向链表的查找

单向链表的元素索引

单向链表的元素修改


单向链表的概念

链表是由一个个结点组成,每个结点通过链接关系连接起来

例如:A->B的链接,B是A的后继结点,A是B的前驱结点

链表分为:单项链表、双向链表、循环链表等,这里只介绍单项链表

单向链表的元素插入

给定一个索引i和一个元素data,生成一个值为data的结点,并插入到第i个位置上

第一步,判断插入位置是否合法,若不合法则抛出异常

第二步,对给定的元素,生成一个链表结点

第三步,如果插入位置是0,则直接把生成的结点的后继结点设置为当前链表的头节点,并且把生成的结点设置为新的链表头

第四步,如果插入位置不是0,则遍历到插入位置的前一个位置,把生成的结点插入进来

第五步,更新链表的大小

单向链表的元素删除

给定一个索引i,从链表头开始数到第i个结点删除

第一步,判断删除位置是否合法,若不合法则抛出异常

第二步,如果删除位置为首个结点,直接把链表头更新为它的后继结点

第三步,如果删除位置非首个结点,则遍历到要删除位置的前一个结点,并且把前一个结点的后继结点设置为它后继的后继

第四步,更新链表的大小

单向链表的查找

遍历链表,查找元素是否存在,如果存在则返回该结点,否则返回NULL,时间复杂度为O(n)

第一步,遍历链表,比较两个元素,若相等则返回当前节点

第二步,若没找到则返回NULL

单向链表的元素索引

给定一个索引值i,遍历链表,找到第i个索引并返回元素值,时间复杂度O(n)

第一步,判断给定索引是否合法,若不合法则抛出异常

第二步,通过索引访问元素

单向链表的元素修改

将链表中指定索引的元素更新为新的值

第一步,通过索引访问对应结点,修改元素值

http://www.dtcms.com/a/267427.html

相关文章:

  • ubuntu手动编译VTK9.3 Generating qmltypes file 失败
  • 解决URL编码兼容性问题:空格转义与HTML实体解码实战
  • 基于企业私有数据实现智能问答
  • 动手学深度学习-学习笔记(总)
  • Kali Linux Wifi 伪造热点
  • 基于Java+SpringBoot的三国之家网站
  • 嵌入式系统内核镜像相关(十二)
  • Flink-Source算子点位提交问题(Earliest)
  • 力扣 hot100 Day35
  • STM32中实现shell控制台(命令解析实现)
  • MySQL回表查询深度解析:原理、影响与优化实战
  • 从UI设计到数字孪生实战部署:构建智慧城市的智慧照明系统
  • 【项目笔记】高并发内存池项目剖析(三)
  • NX二次开发——NX二次开发-检查点是否在面上或者体上
  • MPLS 多协议标签交换
  • Python实例题:基于 Python 的简单聊天机器人
  • springsecurity5配置之后启动项目报错:authenticationManager cannot be null
  • LangChain4j 框架模仿豆包实现智能对话系统:架构与功能详解
  • windows 安装 wsl
  • 基于matlab卡尔曼滤波器消除噪声
  • 点击方块挑战小游戏流量主微信小程序开源
  • Java+Vue开发的进销存ERP系统,集采购、销售、库存管理,助力企业数字化运营
  • 浏览器与服务器的交互
  • 深度学习图像分类数据集—百种鸟类识别分类
  • STM32中实现shell控制台(shell窗口输入实现)
  • 结构型智能科技的关键可行性——信息型智能向结构型智能的转变(修改提纲)
  • rk3128 emmc显示剩余容量为0
  • kubectl exec 遇到 unable to upgrade connection Forbidden 的解决办法
  • 浅度解读-(未完成版)浅层神经网络-多个隐层神经元
  • 解决el-select数据类型相同但是显示数字的问题