C语言-数据结构-单链表的查找、打印和销毁

文章详细介绍了如何在C语言中使用链表结构,包括查找指定数据的SListFind函数,遍历并打印链表的SListPrint函数,以及安全销毁链表的SListDestroy函数,强调了遍历过程中不改变链表的特性。
摘要由CSDN通过智能技术生成

 链表的查找:

SLTNode* SListFind(SLTNode* phead, SLTDateType x)
{
	SLTNode* cur = phead;
	while (cur)
	{
		if (cur->data == x)
		{
			return cur;
		}
		else
		{
			cur = cur->next;
		}
	}
	return NULL;
}

思路很简单,从头遍历链表,比较每一个节点所存放的数据,是就返回,不是就让工作cur指针往后移一下。

因为查找并不改变链表,所以只要传一维指针就可以了。

打印链表:

//打印链表
void SListPrint(SLTNode* phead)
{
	SLTNode* cur = phead;
	while (cur != NULL)
	{
		printf("%d->", cur->data);
		cur = cur->next;
	}
	printf("NULL\n");
}

打印链表的思路与查找类似,也是用工作指针cur进行链表遍历,并将每一个节点中的data打印出来。

与查找算法一样,打印不需要改变链表,所以只需要传一级指针即可。

销毁链表:

//销毁链表
void SListDestroy(SLTNode** pphead)
{
	assert(pphead);
	SLTNode* cur = *pphead;
	while (cur)
	{
		SLTNode* next = cur->next;
		free(cur);
		cur = next;
	}
	*pphead = NULL;
}

 运用工作指针cur遍历列表,并在遍历中将cur的下一个节点用next指针进行储存,然后释放cur所指向的指针,再将next赋值给cur,以此循环,最后再将头指针指向空,以防野指针的出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值