2.3.1_单链表的定义

本文介绍了单链表的概念,它是线性结构的一种链式存储实现。相比顺序表,单链表的优点在于不需要连续空间,扩展方便,但缺点是不可随机存取且存储密度低。文章还详细讲解了如何定义和初始化单链表,包括带头结点和不带头结点的情况,并比较了两者在判断空表上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是单链表?

答:和顺序表一样,从逻辑结构上来看都是线性表。不同的是顺序表采用的是顺序存储的方式,而单链表采用的是链式存储。即:单链表是用“链式存储”(存储结构)的方式实现了“线性结构”(逻辑结构)。
在这里插入图片描述
在这里插入图片描述

单链表和顺序表各自的优缺点

顺序表:

  1. 优点:可以随机存取,存储密度高。
  2. 缺点:要求大片的连续空间,且改变容量不方便。

单链表:

  1. 优点:不要求大片的连续空间,改变容量方便。
  2. 缺点:不可随机存取(意思是如果我们要找到某一个结点的话,必须从第一个结点依次往下遍历,直到找到我们想要的那个结点),且要耗费一定的空间去存放指针,因此存储密度不太高。

定义一个单链表

在这里插入图片描述
Q:如何去增加一个新的结点?
A:struct LNode * p = (struct LNode *)malloc(sizeof(struct LNode));

注:以上写法有些长,我们可以使用 “typedef” 关键字去改写一下:
A:typedef struct LNode LNode // 即用 LNode 去代替 struct LNode,使得写法更简便。

所以,经过改写之后的代码应该是:
LNode * p= (LNode *)malloc(sizeof(LNode));

以上我们只是定义了一个单链表,并未对其初始化,那么下面我们将学习如何初始化一个单链表

初始化单链表(不带头结点)

在这里插入图片描述
如何对其进行判断其是否为空表:(不带头结点)
在这里插入图片描述

初始化单链表(带头结点)

在这里插入图片描述

同理,如何判断空表?(带头结点)
在这里插入图片描述

“带” 与 “不带” 的对比:

不带:空表判断:L == NULL,写代码不方便。
带:空表判断:L ->next== NULL ,更方便一些。(常用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值