(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)(头插法)创建单链表
【算法描述】
- 头插法 , 每一次将新的结点插入到头结点之后
- 社交|腾讯视频为IP编写「价值算法」
- 新书推荐 │ 大数据算法设计与分析
- 网友热议|母亲回应3个孩子2个上清华:只能教孩子做人诚实守信 学习都靠自己努力
- 算法|75英寸最值得入手的大屏电视,性能画质没得挑
- 格力电器|不要再说Python难了,按照这个学习路线,四周速成Python
- 算法|“赞奇科技”获得数千万元战略投资
- 中国移动|中国移动新一代超级SIM卡芯片来了:2MB存储、算法翻3倍
- 算法|为什么你只是说了某样东西,手机就会给你推送相关商品?几步教你轻松解决!
- OPPO|准大学生看过来!满足大学四年学习、生活需求平板,三件套不到2K
- 为了抢用户,Facebook要改算法了
