02-2.3.2_2 单链表的查找

喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。
此外,《程序员必备技能》专栏和《程序员必备工具》专栏(该专栏暂未开设)日后会逐步更新,感兴趣的小伙伴可以点一下订阅、收藏、关注!
谢谢大家!

注意,本节只讨论带头结点的情况

按位查找

GetElem(L, i)按位查找——获取表L中的第 i 个元素的值
具体代码实现:

LNode * GetElem(LinkList L, int i){if(i<0)return NULL;LNode *p;                  //指针p指向当前扫描到的结点int j = 0;                 //当前p指向的是第几个结点p = L;                     //L指向头结点,头结点是第0个结点(不存数据while(p != NULL && j < i){ //循环找到第 i 个结点p = p->next;j++;}return p;
}

平均时间复杂度: O ( n ) O(n) O(n)
王道书版本:

LNode * GetElem(LinkList L, itn i){int j = 1;LNode *p = L->next;if(i == 0)return i;if(i < 1)return NULL;while(p != NULL && j < i){p = p->next;j++;}return p;
}

封装(基本操作)的好处:
避免重复代码、简洁、易维护
此外,在写代码时还要注意程序的健壮性

按值查找

LocateElem(L, e)按值查找——在表L中查找具有给定关键字值的元素
具体代码实现:

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

平均时间复杂度: O ( n ) O(n) O(n)

求表的长度

int length(LinkList L){int len = 0;LNode *p = L;while(p->next != NULL){p = p->next;len++;}return len;
}

时间复杂度: O ( n ) O(n) O(n)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FJSP:蛇鹫优化算法(SBOA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

详细介绍 FJSP&#xff1a;蛇鹫优化算法&#xff08;Secretary bird optimization algorithm&#xff0c;SBOA&#xff09;求解柔性作业车间调度问题&#xff08;FJSP&#xff09;&#xff0c;提供MATLAB代码-CSDN博客 完整MATLAB代码 FJSP&#xff1a;蛇鹫优化算法&#xff…

设计模式(十三)行为型模式---命令模式(command)

文章目录 命令模式简介结构UML图具体实现UML图代码实现 命令模式简介 命令模式&#xff08;command pattern&#xff09;也叫动作模式或者事务模式。它是将请求&#xff08;命令&#xff09;封装成对象&#xff0c;使得可以用不同的请求对客户端进行参数化&#xff0c;具体的请…

梯度下降: 01.原理与代码实操

1. 简介 梯度下降法(GradientDescent) 算法,不像多元线性回归那样是一个具体做回归任务的算法,而是一个非常通用的优化算法来帮助一些机器学习算法(都是无约束最优化问题)求解出最优解,所谓的通用就是很多机器学习算法都是用梯度下降,甚至深度学习也是用它来求解最优解。…

区块链--Ubuntu上搭建以太坊私有链

1、搭建私链所需环境 操作系统&#xff1a;ubuntu16.04&#xff0c;开虚拟机的话要至少4G&#xff0c;否则会影响测试挖矿时的速度 软件&#xff1a; geth客户端 Mist和Ethereum Wallet&#xff1a;Releases ethereum/mist GitHub 2、安装geth客户端 sudo apt-get update …

Java——常见进制

在计算机领域有四种比较常见的进制&#xff0c;分别是二进制、八进制、十进制和十六进制。 一、二进制&#xff08;Binary&#xff09; 二进制&#xff08;Binary&#xff09;是一种基数为2的数值系统&#xff0c;仅使用两个符号&#xff1a;0和1。所以它的进位规则就是逢二进…

MYSQL一、MYSQL的了解

一、MySQL概述 1、数据库相关概念 为了方便&#xff0c;我们一般把mysql数据库管理系统简称位mysql数据库 通过可以操作数据库管理系统&#xff0c;然后再通过数据库管理系统操作&#xff08;数据库&#xff09;和&#xff08;数据库里面的数据&#xff09; 2、当前主流的关系…

第二站:Java——集合框架的深邃海洋(续)

### Java——集合框架的深邃海洋&#xff08;续&#xff09; 在我们的Java集合框架探索之旅中&#xff0c;我们已经涉足了基本操作、高级特性&#xff0c;现在让我们深入探讨一些特定场景下的应用和进阶技巧&#xff0c;比如集合的分区操作、分组、并行流的性能考量&#xff0…

视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别

在公安和公共安全领域&#xff0c;视频图像信息的应用日益广泛&#xff0c;尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理&#xff0c;GA/T 1400和GB/T 28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的&#xff0c;但它们在实际…

Llama(一):Mac M1芯片运行Llama3

目录 安装Ollama for Mac 下载Llama 3模型 运行Llama3 试用Llama3 在命令行中使用Llama3 背景 本地环境&#xff1a;Mac M1,16GB内存 安装Ollama for Mac 官方地址 https://ollama.com/download/Ollama-darwin.zip 链接: 百度网盘 提取码: 8wqx 下载Llama 3模型 oll…

从国产低代码龙头企业零赛云看零(低)代码在软件开发行业和工业企业的应用趋势

从国产低代码龙头企业零赛云看零&#xff08;低&#xff09;代码在软件开发行业和工业企业的应用趋势 --- 什么是零&#xff08;低&#xff09;代码&#xff1f;零&#xff08;低&#xff09;代码开发完整指南 一、什么是零&#xff08;低&#xff09;代码&#xff1f; 零&am…

C项目实战:俄罗斯方块

图形 终端控制代码 (ANSI/VT100) 简介 终端 (控制) 代码是用来控制终端的特殊命令&#xff0c;它可以改变颜色和光标的位置&#xff0c;实现那些无法被程序本身完成的操作。 参考文章&#xff1a;终端控制代码 (ANSI/VT100) Terminal Codes 简介 (转载翻译)_终端代码-CSDN博…

pdb文件名称被修改导致pdb文件加载失败的实战排查案例分享

目录 1、概述 2、问题说明 3、pdb文件加载失败的可能原因有哪些&#xff1f; 4、使用!sym noisy打开pdb加载详情&#xff0c;发现pdb文件名称确实被修改了 5、Windbg是如何知道要加载pdb文件名称的&#xff1f; C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表…

【html】如何给桌面设置渐变背景,通过HTML代码实现

录制的步骤 可以执行以下操作: 查看录制的步骤以幻灯片放映形式查看录制的步骤查看其他详细信息步骤 下一页 步 1: (‎2024/‎6/‎2 16:32:49) 用户在"项目视图 (列表)"上右键单击(在"G:\背景"中) 对于此步骤,没有保存任何屏幕截图。 上一个 下一页 步 …

linux进程加载和启动过程分析

我们的源代码通过预处理,编译,汇编,链接后形成可执行文件,那么当我们在终端敲下指令$ ./a.out argv1 argv2 后,操作系统是怎么将我们的可执行文件加载并运行的呢? 首先知道,计算机的操作系统的启动程序是写死在硬件上的,每次计算机上电时,都将自动加载启动程序,之后…

Java面试题:请对比synchronized和Lock接口,说明它们的优缺点和适用场景

synchronized关键字和java.util.concurrent.locks.Lock接口都是Java中用于实现线程同步的手段。它们在很多方面有相似之处&#xff0c;但也有一些关键的区别。以下是它们之间的对比&#xff1a; synchronized 优点&#xff1a; 使用简单&#xff1a;使用synchronized关键字可…

Spring Bean Request作用域:深入解析与实战洞察

1. 引言 在Spring框架中&#xff0c;Bean的作用域&#xff08;Scope&#xff09;定义了Bean的生命周期和可见性。其中&#xff0c;Request作用域是专为Web应用设计的&#xff0c;它在每个HTTP请求的生命周期内提供一个全新的Bean实例。理解Request作用域的工作机制及其背后的源…

翻译《The Old New Thing》- What a drag: Dragging a Uniform Resource Locator (URL)

What a drag: Dragging a Uniform Resource Locator (URL) - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080312-00/?p23133 Raymond Chen 2008年03月12日 麻烦的拖拽&#xff1a;拖拽统一资源定位符&#xff08;URL&#xff09; 简要 …

C++多态-联编

静态联编 静态联编支持的多态性&#xff0c;我们将其称为编译时的多态性&#xff0c;又称为静态的多态性&#xff0c;因为联编的过程是在程序开始执行之前进行的。在编译、连接的过程中&#xff0c;系统可以根据类型匹配等特征确定程序中调用与具体执行函数的关系&#xff0c;…

MySQL入门学习-查询进阶.分页查询

在 MySQL 中&#xff0c;分页查询是一种用于在查询结果中获取特定页面数据的技术。它通常用于处理大量数据的情况&#xff0c;以便将结果分为多个页面进行显示或处理。 以下是关于分页查询的一些关键概念和特点&#xff1a; 1. 分页查询的特点&#xff1a; - 数据量控制&…

识别同一用户

识别来自同一终端的访问技术 使用HTTP访问Web服务器时&#xff0c;会反复地执行页面的迁移和图像的读取等通信处理。而不同的通信都是使用不同的方式进行处理。因此服务器端就不需要对每个终端的状态进行单独的管理&#xff0c;可以降低服务器的负载。 另外&#xff0c;…