数据结构----单链表(无哨兵位的头结点)

本文详细介绍了无哨兵位的单链表,包括链表的头插、尾插、头删、尾删、任意位置的插入删除、查找元素及节点地址返回以及单链表的打印操作。讨论了在不同操作中如何处理头结点的变化,并提供了相应的代码实现。
摘要由CSDN通过智能技术生成

1f9d6eb71dae496082dea32625a1f22a.png60adda28938649be8d3d9a471bf70a01.png

        链表,作为数据结构中非线性表的数据结构,其重点表现在:逻辑相邻,空间不相邻。

71e72d364f6d4ad0bba8a80e5e2704c3.png图一表现为:无哨兵位的单链表,图二表现为:有哨兵位的单链表。

有哨兵位的单链表实施起来难度较小,那么今天我们的重点放在无哨兵位的单链表。 

        51b78af9a2bb4f69af78e28fcef235ee.png

        同样的,首先我们先将链表元素类型重定义,方便应对多种情况:

typedef int SLDatatype;

        然后我们定义链表结点的结构体:包含data,和下一个结点的地址 

typedef struct SListNode
{
	SLDatatype data;
	struct SListNode* next;
}SLNode;

        对于链表,我们就不需要作初始化操作了,初始化也不过是把头结点初始化为NULL,那不如直接创建一个空指针。

        下面我们直接开干,将链表的各类操作实现一波。 

        在开始操作之前,由于涉及到插入新结点,所以我们先写一个结点创造函数(简单):

SLNode* CreatNode(SLDatatype x)
{
	SLNode* newnode = (SLNode*)malloc(sizeof(SLNode));
	if (newnode == NULL)
	{
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YangZ123123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值