数据结构——单链表的查找、求单链表长度、单链表的创建

一、单链表的查找

1.按位查找

==GetElem(L, i): ==按位查找操作,获取表L中第i个位置的元素的值;

平均时间复杂度O(n)

2.按值查找

==LocateElem(L, e)==:按值查找操作,在表L中查找具有给定关键字值的元素;

二、求单链表的长度

== Length(LinkList L)==:计算单链表中数据结点(不含头结点)的个数,需要从第一个结点看是顺序依次访问表中的每个结点。算法的时间复杂度为O(n)。

三、单链表的创建操作

1.头插法建立单链表(平均时间复杂度O(n))
思路:每次都将生成的结点插入到链表的表头。
2.尾插法建立单链表(时间复杂度O(n))

思路:每次将新节点插入到当前链表的表尾,所以必须增加一个尾指针r,使其始终指向当前链表的尾结 点。好处:生成的链表中结点的次序和输入数据的顺序会一致。

3.链表的逆置:

算法思想:逆置链表初始为空,原表中结点从原链表中依次"删除",再逐个插入逆置链表的表头(即"头插"到逆置链表中),使它成为逆置链表的"新"的第一个结点,如此循环,直至原链表为空;

四、学习心得

单链表的查找

  1. 按位查找:这意味着要访问链表中的第k个元素,需要从头结点开始,顺序移动到第k个位置。因为可能需要遍历整个链表,所以平均时间复杂度为O(n)。此操作体现了链表非随机存储的特性,访问特定位置的成本较高。

  2. 按值查找:按值查找时,我们需要遍历链表,检查每个节点的值是否与目标值匹配。这同样具有O(n)的时间复杂度。这种查找操作在链表中是线性的,且它更加强调了链表中元素的无序性。

求单链表的长度

单链表长度的计算需要从第一个数据节点出发,顺序访问每个节点,直到链表末尾。这个过程的时间复杂度也是O(n),因为它涉及到对链表的一次完整遍历。

单链表的创建操作

  1. 头插法:创建单链表的头插法是将新节点插入到链表的前端。这种方法创建的链表元素顺序与添加顺序相反。每次插入操作的时间复杂度为O(1),但建立整个链表的平均时间复杂度为O(n),因为要插入n个元素。

  2. 尾插法:尾插法是将新节点添加到链表的末尾。这保持了元素的添加顺序。若没有维护指向链表最后一个节点的指针,每次插入操作的时间复杂度为O(n),因为需要找到当前最后一个节点。但如果维护了尾指针,每次插入的时间复杂度为O(1),整个链表构建的复杂度仍为O(n)。

链表的逆置

链表的逆置是将链表中的元素反向排列。这通常通过重新排列节点的指针来完成,而不是实际移动节点中的数据。链表逆置的时间复杂度是O(n),因为需要遍历一次链表来重新链接所有的节点。

综合心得

学习单链表的操作不仅让人了解了链表结构本身,还有助于理解数据结构的更广泛原理,例如动态内存管理、指针操作和算法复杂度。链表作为一种基础的数据结构,它的灵活性和动态性使得在进行插入和删除操作时非常高效,特别是在不需要频繁随机访问元素时。同时,链表的操作也强化了对递归和迭代思想的理解,因为很多链表问题可以通过这两种方法来解决。

此外,链表的操作也体现了算法设计中的权衡,比如时间复杂度和空间复杂度的考虑,以及特定场景下算法选择的重要性。例如,尽管链表能够提供快速的插入和删除,它在按索引查找时却不如数组高效。因此,在实践中,选择正确的数据结构对于性能至关重要。

最后,掌握链表的操作也是理解更复杂数据结构如树和图的基础,因为这些结构中都包含了链表的概念。总之,链表不仅是学习数据结构的重要一环,它的概念和操作也贯穿在计算机科学的多个领域中。

相关推荐
倒头就睡的小比特16 小时前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!16 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼18 小时前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
m0_5474866618 小时前
《数据结构教程》全套 PPT课件2026
数据结构
旖旎夜光19 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark19 小时前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her119 小时前
并查集-听课笔记
笔记·算法·并查集
码流子19 小时前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven19 小时前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark19 小时前
从算法设计模式看编程思维的抽象能力4
算法