数据结构–单链表的查找
均以带头结点链表为例
目标:
![](https://img-blog.csdnimg.cn/b50f24882e8c4802b5feffca69548d3e.png)
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;
}
![](https://img-blog.csdnimg.cn/e6515408742145c6876a6b2de1f1c0ce.png)
时间复杂度:O(n)
按值查找
![](https://img-blog.csdnimg.cn/bb42b65a8f204a8abe82e0b0e208afb6.png)
代码实现
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;
}
知识点回顾与重要考点
![](https://img-blog.csdnimg.cn/072afc4f65944d868e8c028c51ed411e.png)