数据结构每日一题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
}
相关推荐
大熊猫侯佩28 分钟前
Swift 数学计算:用 Accelerate 框架让性能“加速吃鸡”
算法·swift
杰克尼1 小时前
2. 两数相加
算法
无聊的小坏坏1 小时前
单调栈通关指南:从力扣 84 到力扣 42
c++·算法·leetcode
_Coin_-1 小时前
算法训练营DAY29 第八章 贪心算法 part02
算法·贪心算法
阿维同学1 小时前
自动驾驶关键算法深度研究
人工智能·算法·自动驾驶
今天背单词了吗9802 小时前
算法学习笔记:11.冒泡排序——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·学习·算法·排序算法·冒泡排序
汤姆爱耗儿药2 小时前
专为磁盘存储设计的数据结构——B树
数据结构·b树
倔强的小石头_5 小时前
【C语言指南】函数指针深度解析
java·c语言·算法
Yasin Chen5 小时前
C# Dictionary源码分析
算法·unity·哈希算法
_Coin_-6 小时前
算法训练营DAY27 第八章 贪心算法 part01
算法·贪心算法