首页 > 其他分享 >02-2.3.1 单链表的定义

02-2.3.1 单链表的定义

时间:2024-06-02 15:57:22浏览次数:14  
标签:02 结点 单链 LNode LinkList 2.3 指针 struct

⚠️ 这两天实在过于忙碌,以至于没有学习的时间,今天闲下来,立刻恢复更新,有等待我最新文章的小伙伴实在抱歉!
⚠️ 另外,有喜欢我笔记的小伙伴可以订阅我的《数据结构》专栏,该专栏收录在我的大专栏《cs-self-learning》中,也可以订阅,日后会有更多有用的技能、笔记全部收录在大专栏里面,谢谢支持!

定义

每个节点除了存放数据之外,还要存储指向下一个节点的指针

  • 优点:不要求大片连续空间,改变容量方便
  • 缺点:不可随机存取,要耗费一定空间存放指针

用代码定义一个单链表

struct LNode{          //定义单链表节点类型
	ElemType data;     //每个结点存放一个数据元素
	struct LNode *next;//指针指向下一个节点
}

struct LNode *p = (struct LNode *) malloc (sizeof(struct LNode));
//增加一个新的结点:在内存中申请一个结点所需空间,并用指针p指向这个结点

/*
* LNode是结点
* data是数据域
* next是指针域
*/

typedef的用法:
typedef <数据类型> <别名>
通过typedef的用法,我们可以将上面的struct LNode写得更简洁一点
——> typedef struct LNode LNode;
然后就可以将上述代码简写为
——> LNode *p=(LNode *) malloc (sizeof(LNode));


同理,以下代码:

typedef struct LNode{//定义单链表结点类型
	ElemType data;//每个结点存放一个数据元素
	struct LNode *next;//指针指向下一个结点
}LNode, *LinkList;//LinkList意思是单链表

可以简写为下面这种形式:

struct LNode{
	ElemType data;
	struct LNode *next;
};
typedef struct LNode LNode;
typedef struct LNode *LinkList;

要声明一个单链表时,只需声明一个头指针L,指向单链表的第一个结点
由于各个结点是由next指针连起来的,所以知道了第一个结点就相当于找到了整个单链表

不带头结点的单链表

如何初始化一个单链表

typedef struct LNode{
	Elemtype data;
	struct LNode *next;
}LNode, *LinkList;

//初始化一个空的单链表
bool InitList(LinkList &L){
	L = NULL;//空表——暂时没有任何节点(目的:防止脏数据)
	return true;
}

void test(){
	LinkList L;//声明一个指向单链表的指针
	InitList(L);//初始化一个空表
	//……后续代码……
}

//判断单链表是否为空
bool Empty(LinkList L){
	if(L == NULL)
		return true;
	else
		return false;
}
/*
* 或者可以写成
* bool Empty(LinkList L){
*     return(L == NULL);
* }
*/

带头结点的情况

typedef struct LNode{
	Elemtype data;
	struct LNode *next;
}LNode, *LinkList;

//初始化一个单链表(带头结点)
bool LinkList(LinkList &L){
	L = (LNode *) malloc (sizeof(LNode));//分配一个头结点
	if(L == NULL)
		return false;
	L->next = NULL;//头节点之后还暂时没有结点
	return true;
}

void test(){
	LinkList L;//声明一个指向单链表的指针
	//初始化一个空表
	InitList(L);
	//……后续代码……
}

这个next头结点是不存储数据的,只是为了之后实现某些基本操作的时候会更方便一些
要判断这个单链表是否为空,我们要判断的就是这个头结点next指针域是否为NULL,如果是NULL,就是空的。

不带头结点VS带头结点

  • 带头结点——写代码更方便
  • 不带头结点——写代码更麻烦
    对于这一部分,需要注意的是:
  • 不带头结点,头指针指向的下一个结点是实际用于存放数据的结点
  • 带头结点,头指针指向的下一个结点是不存放数据的,只有这个头结点之后下一个结点才会用于存放数据

标签:02,结点,单链,LNode,LinkList,2.3,指针,struct
From: https://blog.csdn.net/G2Esports_NiKo/article/details/139392683

相关文章

  • 利用AutoUnattend自动应答文件安装Windows Server 2025 26100正式版
    安装视频:https://www.bilibili.com/video/BV1ji421v7jZ/AutoUnattend自动应答文件,安装到第一个硬盘(容量大于100G),安装后登录用户Administrator的密码:pass1234AutoUnattend自动应答文件已经上传到:https://bbs.pcbeta.com/viewthread-2004613-1-1.html ......
  • 小米投屏怎么投?收好这3个投屏指南!(2024新)
    近年来,小米凭借过硬的品质和合理的价格成为手机市场的一股强劲力量。随着其销量的上升,人们可以通过多种方式使用它来获得乐趣和便利。比如小米MIUI11自带一个“光环”——Miracast,可以让用户在电脑上控制小米/红米/小米,获得更好的用户体验。而对于大多数使用其他版本操作系......
  • 手机怎么投屏?值得收藏的5个投屏软件(2024全新)
    在大屏幕上观看自己喜欢的电影、电视节目和其他媒体节目总是一种很棒的体验。因此,如果你正在寻找通过无线网络或USB数据线在windows或mac电脑或笔记本电脑上屏幕镜像、投屏到电脑显示屏上的指南,那么可以花3分钟时间往下看看。在本文中,小编整理了手机投屏的最简单的方法以及挑选......
  • 苹果手机怎么恢复微信聊天记录?2024不要错过的4个方法!
    作为一款广受欢迎聊天APP,微信会保存我们的聊天记录,包括图片、视频和信息。然而,很多人都想知道,如果我们意外丢失或删除了苹果手机微信上的数据,是否还能恢复它们?答案是100%肯定的。接下来,本文将为你介绍苹果手机怎么恢复微信聊天记录,其中包括在有备份或无备份的情况下找回删除的......
  • 【数据结构】单链表-->详细讲解,后赋源码
    欢迎来到我的Blog,点击关注哦......
  • SQLServer2022创建表及字段增加备注
    SQLServer2022创建表及字段增加备注,导入Oracle12c示例数据库HRschema下的表及数据。在SQLServer中,可以使用系统视图sys.extended_properties来查看表或字段的描述官方文档地址https://learn.microsoft.com/en-us/sql/ssms/visual-db-tools/column-properties-visual-dat......
  • 微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
    安装配置相关软件安装PowerShell7/Coredotnettoolinstall--globalPowerShell安装VisualStudio扩展MicrosoftChildProcessDebuggingPowerTool2022安装插件后启动VisualStudio,可以在Debug->OtherDebuggingTargets中找到ChildProcessDebuggingSet......
  • 202305青少年软件编程(Python)等级考试试卷(四级)
    第1题【单选题】有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。问第n年的时候,共有多少头母牛?由递推法可推测,当年数小于等于4的时候,第几年就是有几头牛,即a[1]=1;a[2]=2;a[3]=3;a[4]=4。当n大于4的时候,这时候第......
  • LitCTF2024 web复盘
    昨天61,本来打算出去玩玩,看到有比赛那就做做。题目总体来说不难,就是没有提示试错太多了,复盘下昨天的一些东西(今天NSS上靶机没上线,文字描述吧)。exx常规的xxe漏洞直接打就行,file:///flagSAS-SerializingAuthenticationSystem极其简单的反序列化,直接构造使其满足isvaild的......
  • Exercise 02
    Exercise02Exercise02Didyouknowthatyouandyourcomputerspeakdifferentlanguages.Itdoesn'tspeakspanishorswedishorchinese.Itspeaksin1onesand2zeros.Youcan'tcommunicatedirectlywithyourcomputerbutthat'swhe......