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

16. 线性表的链式表示和实现(5)

本节主要介绍单链表的复杂算法(删除,头插法建立单链表)实现。

本文部分ppt、视频截图来自:[青岛大学-王卓老师的个人空间-王卓老师个人主页-哔哩哔哩视频]

1. 单链表的复杂操作

  • 删除——删除第 i 个节点

【算法步骤】
在这里插入图片描述

  1. 首先找到 ai-1 的存储位置p,保存要删除的 ai 的值。
  2. 另p->next 指向ai+1
  3. 释放结点 ai 的空间。在这里插入图片描述
【删除算法描述】
//将线性表L中第i个数据元素删除
Status ListDelete_L(LinkList &L,int i,ElemType &e){p = L;j = 0;//寻找第i个结点,并令p指向其前驱while(p -> next && j < i-1){p = p->next;++j;}if(!(p->next)||j>i-1) return ERROR; //删除位置不合理的q = p -> next; //临时保存被删结点的地址以备释放p -> next = q -> next; //改变删除结点前驱结点的指针域e = q -> data; //保存删除结点的数据域delete q;      //释放删除结点的空间
return OK;
}//ListDelete_L
  • 单链表的建立——头插法

头插法:元素插入在链表头部,也叫前插法。(算法时间复杂度:O(n))

  1. 从一个空表开始,重复读入数据;
  2. 生成新结点,将读入数据存放到新结点的数据域中;
  3. 从最后一个结点开始,依次将各结点插入到链表的前端,如下图,要建立链表L(a,b,c,d,e),按(e,d,c,b,a)的顺序插入。
    在这里插入图片描述
【算法描述】
void CreateList_H(LinkList &L,int n){L = new LNode;L -> next = NULL; //先建立一个带头结点的单链表for(i = n;i > 0;--i){p = new LNode;//生成新结点cin >> p -> data;//输入元素值p -> next = L -> next; //插入到表头L -> next = p;}
} //CreateList_H
http://www.dtcms.com/a/252350.html

相关文章:

  • git如何强制拉取远程分支覆盖本地分支
  • 数据仓库面试题合集⑤
  • 在IntelliJ IDEA中使用Maven配置Tomcat环境
  • 条件查询详细说明
  • 如何在 Android 上备份音乐:保护歌曲的 5 种方法
  • OceanBase上架 KubeSphere Marketplace!打造云原生数据库新范式
  • 把springboot打包为maven可引入的jar
  • VsCode 常用快捷键设置方法
  • arcpy数据分析自动化(2)
  • 【Mini-F5265-OB开发板试用测评】基于ST7735STFT屏幕的LVGL9移植
  • 【Linux驱动开发 ---- 1.1_Linux 基础操作入门】
  • 苍穹外卖--添加购物车
  • Websocket 数据实时更新(消息提醒功能)异步+事件发布
  • 我是如何使用Claude Code
  • 基于NAS与内网穿透技术的远程访问架构设计及安全实现
  • 浏览器实现跨系统交互
  • 【寻找Linux的奥秘】第十章:基础文件IO(上)
  • 华为流程体系拆解系列:L1-L6分层拆解逻辑
  • CentOS 7 环境下 Visual Studio Code 安装与部署
  • 分布式系统全链路监控之一:分布式全链路监控基础概念和OpenTelemetry
  • 5.安装IK分词器
  • 鸿蒙组件通用事件开发全攻略:从基础交互到工程实践
  • 华大TAU1114-1216A00四系统GNSS定位模块,车载/穿戴/IoT全适配!-165dBm高灵敏度,定位快人一步!“
  • 基于nacos和gateway搭建微服务管理平台详细教程
  • 安宝特案例丨突破传统手术室,Vuzix AR 眼镜圆满助力全膝关节置换术
  • 【力扣 中等 C】912. 排序数组
  • 高级网络中间人攻击与加密防护机制
  • 安宝特方案丨AR破解带电配网作业困局!全方位解决方案赋能电力运维新变革
  • 日志混乱与数据不一致问题实战排查:工具协同调试记录(含克魔使用点)
  • java 数组排序算法