(4)顺序表查找
【算法描述】
- 查找指定元素e , 返回下标
- 遍历数组 , 判断当前元素是否等于查找的元素e
- 若找到 , 则返回下标+1 , 否则 , 返回-1
这里查找 , 有一个新的概念:平均查找长度(ASL:Average Search Length) 。
(5)顺序表插入
【算法描述】
- 在第i个位置 , 插入元素e
- 首先判断插入下标是否合理 , 不合理 , 返回错误信息
- 合理 , 则判断数组是否已满 , 已满 , 则返回错误信息
- 采用 realloc 函数重新分配内存空间
- 未满 , 则将下标i之后的数组元素 , 向后移动一位 , 直到第i为 , 设置i的值为e
- 表长加1
(6)顺序表删除
【算法描述】
- 判断删除下标i是否合理 , 不合理 , 则返回错误信息
- 合理 , 则将i+1之后的元素 , 向前移动一位
- 表长减1
1.4、线性表的链式表示(1)链表定义
线性表的链式存储 , 用一组任意的存储单元来存储线性表中的数据元素 , 这组存储单元可以是连续的 , 也可以是不连续的 。
只需要记住下一个元素的地址即可 。
- 链表中的每个数据元素及其下一个元素的地址称为结点(node)
- 结点包含两部分:数据域、指针域
- 数据域:存储数据元素的值
- 指针域:存储下一个节点的元素地址
- 链表的这种存储特性 , 称为:顺序存储 。
(2)链表分类
线性表的链式表示 , 可以分为如下几种:
- 单链表
- 循环链表
- 双向链表
- 双向循环链表
- 二叉链表
- 十字链表
- 邻接表
- 邻接多重表
采用C语言中的结构体 , 定义单链表 。
- 一个数据域
- 一个指针域
2)单链表初始化
【算法描述】
- 生成一个新节点作为头结点 , 然后L指向头结点
- 然后它的指针域设置为NULL , 表示空链表
(3)取值
【算法描述】
- 查找第i个元素
- 从头开始遍历链表 , 采用j作为计数
- 当j<i , 并且当前节点不为NULL , 则循环继续
- 否则 , 返回错误信息
(4)查找
【算法描述】
- 查找指定元素 , 返回链表结点
- 未查找到 , 则返回null
(5)插入
【算法描述】
- 在第i个位置结点之后插入元素
(6)删除
【算法描述】
- 删除第i个结点元素
(7)(头插法)创建单链表
【算法描述】
- 头插法 , 每一次将新的结点插入到头结点之后
- 将理论注入深度学习,对过渡金属表面进行可解释的化学反应性预测
- 合规|上海制定反垄断、互联网营销算法、盲盒经营活动等新业态合规指引
- c语言|e观沧海丨算法焉能藏“算计”
- 人类的工作会被AI取代吗?如果机器能够深度学习|为什么说AI能作巴赫的曲,却写不出村上春树的小说?
- Jeff De2021谷歌年度 Jeff
- 董明珠|向任正非学习,格力推行狼性管理,董明珠:违反制度的元老也得走
- meta|搞Java怎么玩深度学习,生产环境用DL4J啊
- 算法|【2022/1/15】thinkphp源码无差别阅读(二十)
- 算法|电竞好用日常也爽的小金刚显示器,优派VX2780-2K-PRO分享
- 算法|用户来得太难,走得太容易,怎么办?