继上篇文章我们探讨了单链表的两种创建方法(头插法和尾插法),今天我们来学习一下单链表的两种查找方法--按序查找和按值查找。
按序查找的代码实现如下:
//按位查找
LinkList GetElem(LinkList L, int i)
{
int j = 1;
LinkList p = L->next;//让p指向第一个节点
if (0 == i)
{
return L;//i是0返回头节点
}
if (i < 1)
{
return NULL;//i是负值返回空
}
while (p&&j<i)
{
p = p->next;
j++;
}
return p;
}
这里使用的是while循环循环遍历查找,实现起来方便简单。时间复杂度为O(n)。
下面是按值查找的代码实现:
/按值查找
LinkList LocateElem(LinkList L, ElemType e)
{
LinkList p = L->next;
while (p != NULL && p->data != e)
{
p = p->next;
}
return p;
}
同样,实现也是简单快捷,时间复杂度也为O(n)。