单链表的查找(按值查找、按位查找)(数据结构与算法)

您所在的位置:网站首页 建立两个单链表的方法是什么 单链表的查找(按值查找、按位查找)(数据结构与算法)

单链表的查找(按值查找、按位查找)(数据结构与算法)

2024-03-12 18:04| 来源: 网络整理| 查看: 265

什么是单链表?

单链表是一种常见的链式数据结构,用于存储和操作数据元素的集合。它由一系列的节点组成,每个节点包含两个部分:数据域和指针域。

单链表的每个节点包含了存储数据的数据域,以及指向下一个节点的指针域。通过这些指针域,节点之间可以按顺序连接起来,形成一个链式结构。链表的最后一个节点通常指向一个特殊的空节点(NULL或nullptr),表示链表的结束。

相比于数组,链表的一大优势是它的动态性。在链表中,节点的添加、删除可以通过修改指针的指向来完成,不需要像数组那样进行元素的移动。这使得链表在插入和删除操作频繁的场景中具有更高的效率。

链表的一个缺点是访问节点需要从头节点开始依次遍历,因为链表中的节点并不是在内存中连续存储的。这导致了链表的访问时间复杂度为O(n),其中n是链表的长度。相比之下,数组可以通过索引直接访问元素,时间复杂度为O(1)。

在这里插入图片描述 在这里插入图片描述

1. 按位查找

单链表按位查找是指根据节点在链表中的位置(即节点序号或下标)来查找节点的操作。通常情况下,我们需要查找的节点序号是从1开始计数的,即第1个节点、第2个节点、第3个节点等。

单链表按位查找的基本思路是从链表头节点开始,遍历链表,直到找到第k个节点,或者链表遍历结束。如果链表遍历结束仍未找到第k个节点,则返回空指针。 平均时间复杂度:O(n)

//按位查找 LNode *GetElem(LinkList L, int i) { if(i LNode *p = L->next; //从第1个结点开始查找数据域为e的结点 while(p != NULL && p->data != e) p = p->next; return p; //找到后返回该结点指针,否则返回NULL }

若e = 8, 当 p指向第一个结点时,5 != 8,p移向下一个结点

在这里插入图片描述

当p移动到第2个结点时,找到数据8,此时while循环退出,返回 return p

在这里插入图片描述

当e = 6时,p指针不断往后移,当p指向NULl时,while循环不满足,退出循环,返回return p 当LocateElem()函数的调用者接受到NULL时,就说明并不存在数据域等于6的结点。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

3. 求单链表的长度

时间复杂度:O(n)

//求表的长度 int length(LinkList L) { int len = 0; //统计表长 LNode *p = L; while(p->next != NULL) { p = p->next; len++; } return len; }

在这里插入图片描述

4. 知识回顾

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3