当前位置: 首页 > 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

相关文章:

  • 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
  • 没有公司可以做网站吗/手机导航下载2022新版
  • 网站做外链平台有哪些/女儿考试没圈关键词
  • 万网域名优惠口令/临沂seo排名外包
  • 网站建设还好做吗/seo外包公司
  • 新手想写小说怎么做网站/刷排名seo软件
  • 如何设计网站建设方案/谷歌外贸网站推广