【算法设计题】编写算法,统计带头节点的单链表L的实际元素个数,第5题(C/C++)

news2025/4/17 3:14:59

目录

第5题 统计带头节点的单链表L的实际元素个数

得分点(必背)

题解:统计带头节点的单链表L的实际元素个数

代码解答

详细解释

举例说明


🌈 嗨,我是命运之光!

🌌 2024,每日百字,记录时光,感谢有你,携手前行~

🚀 携手启航,我们一同深入未知的领域,挖掘潜能,让每一步成长都充满意义。


第5题 统计带头节点的单链表L的实际元素个数

编写算法,统计带头节点的单链表L的实际元素个数

得分点(必背)

// 统计带头节点的单链表L的实际元素个数(得分点)
int listLength(LNode *L) {
    int count = 0; // 计数器
    LNode *p = L; // 临时指针
    //从头节点的下一个结点开始遍历
    while(p->next != NULL) {
        count++; // 计数器加1
        p = p->next; // 指针后移
    }
    return count;
 }

题解:统计带头节点的单链表L的实际元素个数

在这个题目中,我们需要编写一个函数来统计带头节点的单链表L的实际元素个数。带头节点的单链表意味着链表的第一个节点(头节点)不存储有效数据,仅用于标记链表的起始点。因此,我们统计的是头节点之后的节点个数。

代码解答
int listLength(LNode *L) {
    int count = 0; // 计数器,初始化为0
    LNode *p = L; // 临时指针p,指向链表的头节点L
    // 从头节点的下一个结点开始遍历
    while(p->next != NULL) {
        count++; // 每遍历一个节点,计数器加1
        p = p->next; // 临时指针后移,指向下一个节点
    }
    return count; // 返回计数器的值,即链表中实际元素的个数
}
详细解释

1、函数定义和参数

int listLength(LNode *L)
  • listLength 是函数名,返回值类型是 int,表示链表中元素的个数。
  • LNode *L 是函数的参数,表示指向链表头节点的指针。

2、计数器初始化

int count = 0;
  • 定义一个整型变量 count,初始值为0,用于记录链表中实际元素的个数。

3、定义临时指针: 

LNode *p = L;
  • 定义一个临时指针 p,并让它指向链表的头节点 L。我们将使用这个指针遍历链表。

4、遍历链表: 

while(p->next != NULL) {
  •  while 循环用于遍历链表。条件是 p->next != NULL,即当前节点 p 的下一个节点不为空。当 p 的下一个节点为空时,说明我们已经遍历到链表的末尾。

5、计数器累加

count++;
  • 每遍历一个节点(除了头节点外),计数器 count 加1。

6、指针后移: 

p = p->next;
  • 临时指针 p 后移,指向下一个节点。这样在下一个循环中可以检查和计数下一个节点。

7、返回计数器的值: 

return count;
  • while 循环结束时,count 的值就是链表中实际元素的个数。返回这个值。
举例说明

假设链表如下所示:

L -> A -> B -> C -> NULL

其中,L 是头节点,A, B, C 是实际存储数据的节点。

  • 初始时,count = 0p = L
  • 第一次循环:p 指向 Acount = 1
  • 第二次循环:p 指向 Bcount = 2
  • 第三次循环:p 指向 Ccount = 3
  • p 指向 C 后,CnextNULL,循环结束。

最终,count 的值为 3,即链表中实际元素的个数。


嗨,我是命运之光。如果你觉得我的分享有价值,不妨通过以下方式表达你的支持:👍 点赞来表达你的喜爱,📁 关注以获取我的最新消息,💬 评论与我交流你的见解。我会继续努力,为你带来更多精彩和实用的内容。

点击这里👉 ,获取最新动态,⚡️ 让信息传递更加迅速。

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

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

相关文章

第二证券:沪指涨0.31%,电力、煤炭等板块拉升,卫星导航概念活跃

7日早盘,沪指盘中发力上扬,深证成指、创业板指震荡翻绿,场内超2700只个股飘绿。 到午间收盘,沪指涨0.31%报2876.17点,深证成指跌0.04%,创业板指跌0.16%,上证50指数涨0.34%,两市算计…

Leetcode每日刷题之字符串相加(C++)

在学习的同时也不要忘记适当练习,本题字符串相加主要在于字符串类型与整数类型的转化,要将字符串类型转化为整数类型计算后转化为字符串类型输出即可。 思路解析 根据题中给出的信息,我们不可以使用库函数计算大整数,也不能直接将…

代码随想录算法训练营第四天(二)|面试题 02.07. 链表相交 142.环形链表II

面试题 02.07. 链表相交 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环…

视频号直播回放怎么下载?

一、如果是下载自己直播回放视频: 方法一:视频号助手 打开网址:视频号助手 登陆账号后。下面路径,先点击成回放, 后就可以在下面路径,下载全场回放 但是这种有个缺点,就是不能分段下载。这样…

C语言----计算开机时间

计算开机时间 实例说明 编程实现计算开机时间&#xff0c;要求在每次开始计算开机时间时都能接着上次记录的结果向下记录。 实现过程&#xff1a; 1. 在TC中创建一个C文件。 2. 引用头文件&#xff0c;代码如下: #include <stdio.h> 3. 定义结构体time&#xff0c;用来…

AI绘画 | Stable Diffusion后期处理—无需ControlNet也能轻松高清放大图像与老旧照片修复,SD新手必看教程

大家好&#xff0c;我是画画的小强 分享了这么多期AI绘画Stable DIffusion的入门教程和一些常用的插件玩法后&#xff0c;不知道大家有没有发现&#xff0c;SD还有一个功能&#xff0c;似乎没怎么用到过&#xff0c;它就是—后期处理。 今天就给大家分享一下SD中的 “后期处理…

python 空list如何表示

创建空列表&#xff1a; L List() 或者&#xff1a; L [] 这时L就是一个空列表。 需要注意的是&#xff0c;空列表不是None&#xff0c;因此 L [] If L is not None:# 这里的代码总是会被执行 检查列表是否为空要使用len()&#xff1a; L [] if len(L):# 这里的代码不会执…

单词拆分——LeetCode

139.单词拆分 题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用 示例 1&#xff1a; 输入: s &qu…

idea使用free流程,2024idea免费使用

1.先到官网下载&#xff0c;这里选择win系统的&#xff0c;点击下图的.exe https://www.jetbrains.com/idea/download/?sectionwindows 2.下载好后基本上就是一直点击“下一步”到直到安装好&#xff0c;安装好后先打开软件后关闭退出 3.下载配配套资料 链接: https://pan.ba…

AD域服务器中的用户和计算机管理面板中的账户显示异常

如果发现新建用户时在用户和计算机管理面板中发现显示的用户名不是预期中的效果&#xff0c;可以检查用户的完整DN&#xff0c;其中DN中的CN的值决定了你在用户和计算机管理面板中显示的内容是什么。 &#xff08;由于本人使用Python代码完成新建AD域账号时&#xff0c;发现新…

leetcode-27-移除元素

原理&#xff1a; 1、统计数组nums中出现val的次数n&#xff1b; 2、利用循环进行n次删除nums中的val; 3、返回nums的长度 代码&#xff1a;

你的Java项目还在等待吗?快来学会线程池,解放你的性能!

文章目录 你的Java项目还在等待吗&#xff1f;快来学会线程池&#xff0c;解放你的性能&#xff01;1 什么是线程池&#xff1f;为什么需要它&#xff1f;2 线程池的参数有哪些&#xff1f;3 不同类型的线程池有哪些配置&#xff1f; 你的Java项目还在等待吗&#xff1f;快来学…

ctfhub文件包含

文件包含 url http://challenge-41cbfbe04828b338.sandbox.ctfhub.com:10800/ 构造url&#xff0c;利用hackabar进行Post data修改测试 http://challenge-41cbfbe04828b338.sandbox.ctfhub.com:10800/?fileshell.txt ctfhubsystem("ls"); ctfhubsystem("ls…

【漏洞复现】常见框架漏洞复现 合集

Web框架(Web framework)或者叫做Web应用框架(Web application framework)&#xff0c;是用于进行Web开发的一套软件架构。大多数的Web框架提供了一套开发和部署网站的方式。为Web的行为提供了一套支持支持的方法。使用Web框架&#xff0c;很多的业务逻辑外的功能不需要自己再去…

HexView 刷写文件脚本处理工具-基本功能介绍(三)-导出S19/HEX

菜单 导出(Export) 此项目将一系列不同的选项组合在一起,用于将内部数据存储为不同的文件格式。每种导出都可以包含一些选项,以调整输出信息。 导出为S-Record格式(Export as S-Record) Motorola S-Record格式导出数据。 记录类型将根据最高地址信息的长度自动选择。…

Android平台如何不推RTMP|不发布RTSP流|不实时录像|不回传GB28181数据时实时快照?

技术背景 我们知道&#xff0c;Android平台不管RTMP推送、轻量级RTSP服务模块还是GB28181设备接入模块&#xff0c;早期&#xff0c;如果需要实现截图功能&#xff0c;又不想依赖Android系统接口&#xff0c;最好的办法是&#xff0c;在底层实现快照截图。 快照截图&#xff…

YOLOv8由pt文件中读取模型信息

Pytorch的pt模型文件中保存了许多模型信息&#xff0c;如模型结构、模型参数、任务类型、批次、数据集等 在先前的YOLOv8实验中&#xff0c;博主发现YOLOv8在预测时并不需要指定任务类型&#xff0c;因为这些信息便保存在pt模型中&#xff0c;那么&#xff0c;今天我们便来看看…

SpringBoot外部配置文件来修改jar包属性

在jar包所在的文件夹内创建application.yml配置文件&#xff1a; 在yml文件内部添加想要修改的属性值就可以了。 随后输入下面命令来运行jar包&#xff1a; java -jar Big-Deal-Boot-0.0.1-SNAPSHOT.jar 下图是优先级顺序&#xff0c;从上往下依次变高&#xff1a;

Linux Shell编程--变量

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 变量&#xff1a; bash作为程序设计语言和其它高级语言一样也提供使用和定义变量的功能 预定义变量、环境变量、自定义变量、位置变量 一、自定义变…

【Java 第十二篇章】SpringMVC 呜呜,为啥现在面试会问呢

一、简介 Spring MVC 是 Spring 框架的一个模块&#xff0c;用于构建 Web 应用程序&#xff0c;它遵循模型 - 视图 - 控制器&#xff08;MVC&#xff09;设计模式。 二、Spring MVC 的核心组件 1、DispatcherServlet 这是 Spring MVC 的前端控制器&#xff0c;它是整个框架…