数据结构–单链表的查找
均以带头结点链表为例
目标:
GetElem(Li)
:按位查找操作。获取表L中第i个位置的元素的值。
LocateElem(L,e)
:按值查找操作。在表L中查找具有给定关键字值的元素。
按位查找
按位查找,返回第i 个元素(带头结点)
代码实现
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
LNode* GetElem(LinkList L, int i)
{
if (i < 0) return NULL;
LNode* p = L;
int j = 0;
while (L != NULL && j < i)
p = p->next, j++;
return p;
}
时间复杂度:O(n)
按值查找
代码实现
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
LNode* LocateElem(LinkList L, ElemType e)
{
LNode* p = L;
while (p != NULL && p->data != e)
p = p->next;
return p;
}