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

打印 上一主题 下一主题

主题 1022|帖子 1022|积分 3066

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

算法头脑:
输入检查:若链表为空(仅有头结点),直接返回NULL。
遍历链表:重新结点后的第一个结点开始依次向后遍历,比较每个结点的数据域是否等于e。
返回结果:若找到匹配的结点,立即返回指向该结点的指针;若遍历结束未找到,返回NULL。

复杂度分析:
时间复杂度:O(n)空间复杂度:O(1)
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct LNode {
  4.     int data;               // 数据域
  5.     struct LNode *next;     // 指针域
  6. } LNode, *LinkList;
  7. // 查找第一个值为e的结点
  8. LNode* LocateElem(LinkList L, int e) {
  9.     if (L == NULL) {
  10.         return NULL;        // 空链表直接返回
  11.     }
  12.    
  13.     LNode *p = L->next;     // p指向第一个实际结点(跳过头结点)
  14.    
  15.     while (p != NULL) {
  16.         if (p->data == e) {
  17.             return p;       // 找到则返回指针
  18.         }
  19.         p = p->next;       // 继续遍历
  20.     }
  21.    
  22.     return NULL;            // 未找到返回NULL
  23. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

自由的羽毛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表