目录
1.单链表的按照位序查找
2.单链表的按照元素查找
单链表的按照位序查找
1.按位序查找的函数结构:
LNode *LocateNode(LinkList LL, unsigned ii)
函数定义采用的是自己定义的链表结构体LNode,因为在此处找到之后返回的是该结点的地址,所以采取指针形式。函数的参数有两个,第一个参数是完整单链表的地址,第二个是所要查找的结点位序。
2.函数的代码:
LNode *LocateNode(LinkList LL, unsigned ii){
if(LL == NULL){
printf("该链表不存在!");
}
LNode *pp=LL;
int kk=0;
while(pp != NULL && kk<ii){
pp=pp->next;
kk++;
}
if(pp==NUll){
printf("该位置不合法,已经超过了表长!");
}
return pp;
}
该查找方法思路较为简单,主要分为三块:1.判断链表是否存在,2.寻找索访问结点的位置,3.判断该位置是否越界,若未越界,则返回该结点位的地址。
单链表的按结点查找
1.函数的结构形式:LNode *LocateElem(LinkList LL, ElemType *ee)。第一个参数依旧是链表的地址,第二个参数是所要查找元素的地址(考虑到会有结构体的情况,所以参数采用地址的形式。)
2.函数的代码
LNode *LocateElem(LinkList LL, ElemType *ee){
if(LL == NULL){
printf("该链表不存在!");
return NULL;
}
LNode *pp;
*pp = LL->next; //记住要从第一个结点开始计算
while(pp != NULL){
if(pp->data == *ee)
return pp; //如果找到了,就返回地址
pp = pp->next //未找到,则指针后移
}
return NULL; //若元素不存在,则返回NULL。
}
该函数的思路较为简单,有注释即可。