題目描述:有一個帶頭結點的單鏈表L,請設計一個算法查找其第1個數據值為e的結點,若存在則返回指向該結點的指針,若不存在則返回 NULL。
算法思想:
輸入檢查:若鏈表為空(僅有頭結點),直接返回NULL。
遍歷鏈表:從頭結點后的第一個結點開始依次向后遍歷,比較每個結點的數據域是否等于e。
返回結果:若找到匹配的結點,立即返回指向該結點的指針;若遍歷結束未找到,返回NULL。
復雜度分析:
時間復雜度:O(n)空間復雜度:O(1)
#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
}