数据结构每日一题day11(链表)★★★★★

题目描述:有一个带头结点的单链表L,请设计一个算法查找其第1个数据值为e的结点,若存在则返回指向该结点的指针,若不存在则返回 NULL。

算法思想:

输入检查:若链表为空(仅有头结点),直接返回NULL。

遍历链表:从头结点后的第一个结点开始依次向后遍历,比较每个结点的数据域是否等于e。

返回结果:若找到匹配的结点,立即返回指向该结点的指针;若遍历结束未找到,返回NULL。

复杂度分析:

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

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>

typedef struct LNode {
    int data;               // 数据域
    struct LNode *next;     // 指针域
} LNode, *LinkList;

// 查找第一个值为e的结点
LNode* LocateElem(LinkList L, int e) {
    if (L == NULL) {
        return NULL;        // 空链表直接返回
    }
    
    LNode *p = L->next;     // p指向第一个实际结点(跳过头结点)
    
    while (p != NULL) {
        if (p->data == e) {
            return p;       // 找到则返回指针
        }
        p = p->next;       // 继续遍历
    }
    
    return NULL;            // 未找到返回NULL
}
相关推荐
岑梓铭26 分钟前
《考研408数据结构》第七章(6.1~6.3图的概念、存储方式、深/广度遍历)复习笔记
数据结构·笔记·考研·算法·图论·408·ds
qq_433554541 小时前
C++ 单调栈
数据结构·c++·算法
向前阿、1 小时前
数据结构从基础到实战——排序
c语言·开发语言·数据结构·程序人生·算法
Doro再努力1 小时前
数据结构04:链表的概念及实现单链表
c语言·数据结构
2401_841495641 小时前
【语音识别】混合高斯模型
人工智能·python·算法·机器学习·语音识别·gmm·混合高斯模型
码上零乱1 小时前
跟着小码学算法Day19:路径总和
java·数据结构·算法
天选之女wow3 小时前
【代码随想录算法训练营——Day53】图论——110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
算法·深度优先·图论
安迪西嵌入式3 小时前
数据平滑处理算法03——中心移动平均
java·前端·算法
2401_891957313 小时前
简单了解一下哈希表(C++)
数据结构·哈希算法·散列表
CN-Dust3 小时前
【C++】2025CSP-J第二轮真题及解析
开发语言·c++·算法