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
}