1、按序号查找结点,从单链表的第一个结点出发,直到找到第i个结点,否则返回最后一个结点指针域NULL;
LinkList GetElem(LinkList L,int i)
{
int j=1;
if(i==0) //如果i==0,则返回头结点
return L;
if(i<1) //i给的值无效
{
return NULL;
}
LinkList p=L->next; //第一个结点指针赋给p
while(p&&j<i)
{
p=p->next;
j++;
}
return p; //返回第i个结点的指针,若i大于表长,就返回NULL
}
时间复杂度为O(n);
2、按值查找。从单链表的第一个结点出发,若结点中某数据域的值等于给定的e,返回该结点,否则返回NULL;
LinkList GetElem(LinkList L,int e)
{
int j=1;
LinkList p=L->next; //第一个结点指针赋给p
while(p&&e!=p->data)
{
p=p->next;
}
return p; //返回该结点的指针,若i大于表长,就返回NULL
}
这篇博客介绍了两种在单链表中查找节点的方法:1) 按照序号查找,返回第i个结点的指针,时间复杂度为O(n);2) 按照值查找,返回数据域等于给定值的结点指针。这两种方法都涉及到链表的基本操作和遍历技巧。
1519

被折叠的 条评论
为什么被折叠?



