数据结构-4.单链表的查找

这篇博客介绍了如何在带头结点的单链表中进行按位查找、按值查找以及计算链表长度的操作。按位查找通过循环找到第i个元素,按值查找则遍历链表直到找到指定值。所有操作的时间复杂度均为O(n)。此外,提供了相应的C语言实现代码。
摘要由CSDN通过智能技术生成

一.带头结点的按位查找

之前在研究单链表的插入时是寻找第i-1个结点,所以我们这里还按照之前的思路进行循环查找。

//按位查找,结果返回第i个元素。
LNode* GetElem(LinkList L,int i){ //因为返回的是一个结点的地址
	if(i<0)
		return NULL;             //默认头结点是第0个结点
	LNode *p;                     //p是扫描指针
	p=L;
	for(int j=0;j<i&&p!=NULL;j++){//和插入代码的区别是循环到i(找到第i个元素)
		p=p->next;
	}
		return p;                 //返回p指针,if(p!=NULL)不能写,若为空,p返回NULL
}
	

二.带头结点的按值查找

按值查找相对简单,只要进行元素值的比较即可。

LNode* LocateElem(LinkList L,int e){
	LNode *p;
	p=L->next;  //可以直接从第一个结点开始找
	for(int j=0;p->data!=e&&p!=NULL;j++){
		p=p->next;
	}
		return p;//返回p指针,若为空返回NULL

时间复杂度也是O(n)。

三.求单链表的长度

核心思想还是循环的使用,搞懂在哪里跳出循环。

int LengthList(LinkList L){
	int Len;
	LNode *p;
	p=L;      //p为扫描指针
	for(Len=0;p->next!=NULL;len++){
		p=p->next;
	}
	return len;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值