单链表的查找(按位查找和元素查找)

目录

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 && kknext;
		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。 
}

 该函数的思路较为简单,有注释即可。

你可能感兴趣的:(数据结构自学,数据结构)