单向链表的概念和结构

文章目录

  • 1.链表的概念及结构
  • 2.单链表的实现

1.链表的概念及结构

概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表
中的指针链接次序实现的 。
链表的结构跟火车车厢相似,淡季时车次的车厢会相应减少,旺季时车次的车厢会额外增加几节。只需要将火车里的某节车厢去掉/加上,不会影响其他车厢,每节车厢都是独立存在的。
车厢是独立存在的,且每节车厢都有车门。想象一下这样的场景,假设每节车厢的车门都是锁上的状态,需要不同的钥匙才能解锁,每次只能携带一把钥匙的情况下如何从车头走到车尾?
最简单的做法:每节车厢里都放一把下一节车厢的钥匙。

在链表里,每节“车厢”是什么样的呢?
与顺序表不同的是,链表里的每节"车厢"都是独立申请下来的空间,我们称之为“结点/节点”
节点的组成主要有两个部分:当前节点要保存的数据和保存下一个节点的地址(指针变量)。
图中指针变量 plist保存的是第一个节点的地址,我们称plist此时“指向”第一个节点,如果我们希
望plist“指向”第二个节点时,只需要修改plist保存的内容为0x0012FFA0。
为什么还需要指针变量来保存下一个节点的位置?
链表中每个节点都是独立申请的(即需要插入数据时才去申请一块节点的空间),我们需要通过指针变量来保存下一个节点位置才能从当前节点找到下一个节点。
结合前面学到的结构体知识,我们可以给出每个节点对应的结构体代码:
假设当前保存的节点为整形:

struct SListNode
{int data; //节点数据struct SListNode* next; //指针变量用保存下一个节点的地址
};

2.单链表的实现

typedef int SLTDataType;  
typedef struct SListNode  
{  SLTDataType data; //节点数据  struct SListNode* next; //指针保存下一个节点的地址  
}SLTNode;  
void SLTPrint(SLTNode* phead);  
//头部插入删除/尾部插入删除  
void SLTPushBack(SLTNode** pphead, SLTDataType x);  
void SLTPushFront(SLTNode** pphead, SLTDataType x);  
void SLTPopBack(SLTNode** pphead);  
void SLTPopFront(SLTNode** pphead);  
//查找  
SLTNode* SLTFind(SLTNode* phead, SLTDataType x);  
//在指定位置之前插入数据  
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x);  
//删除pos节点  
void SLTErase(SLTNode** pphead, SLTNode* pos);  
//在指定位置之后插入数据  
void SLTInsertAfter(SLTNode* pos, SLTDataType x);  
//删除pos之后的节点  
void SLTEraseAfter(SLTNode* pos);  
//销毁链表  
void SListDesTroy(SLTNode** pphead);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/42922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【基础算法总结】分治—归并

分治—归并 1.排序数组2.交易逆序对的总数3.计算右侧小于当前元素的个数4.翻转对 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.排序数组 …

NFTScan | 07.01~07.07 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2024.07.01~ 2024.07.07 NFT Hot News 01/ 数据:Mad Lads 地板价回升至 100 SOL 上方,24 小时涨幅为 13.65% 7 月 1 日,据数据显示,Solana…

ARM架构以及程序运行解析

文章目录 1. ARM架构 2. ARM处理器程序运行的过程 3. 示例 3. 基于ARM架构的STM32单片机 1. 运行模式 2. 寄存器组 3. STM32的基本结构 4. STM32的运行模式 4. 寄存器组详解 1. 未备份寄存器 2. 备份寄存器 3. 程序计数器 4. 程序状态寄存器 5. CPSR和SPSR寄存器…

【Unity】UGUI的基本介绍

Unity的UGUI(Unity User Interface)是Unity引擎内自带的UI系统,官方称之为UnityUI,是目前Unity商业游戏开发中使用最广泛的UI系统开发解决方案。以下是关于Unity的UGUI的详细介绍: 一、UGUI的特点 灵活性&#xff1a…

Trick : 10^x 以内最多的因子数

Trick : 1 0 x 10^x 10x 以内最多的因子数 1 0 5 10^5 105 以内具有最多的因子数的数是 83160,它有 128 个因子 ; 1 0 6 10^6 106 以内具有最多因子数的数是 720720,它有 240 个因子 ; 所以遇到需要枚举因子的,预处理之后大胆枚举就可以&…

Python 爬虫 tiktok API接口获取tiktok用户关注列表

此接口可获取tiktok用户关注列表。若有需要,请点击文末链接联系我们。 详细采集页面如下https://www.tiktok.com/quanap_official 请求API http://api.xxxx.com/tt/user/following?user_id7252644648840381445&count10&offset0&tokentest 请求参数 返…

Impala写Parquet文件

Impala Parquet相关代码 https://github.com/cloudera/Impala/search?l=cpp&q=parquet&ref=cmdform 没有可重用的库接口,需要在代码里去看,提取出来,直接使用源码。 调用关系如下(自右向左调用): HdfsParquetTableWriter(HdfsTableWriter)<-HdfsTableSink<…

改进Transformer模型其实也不难

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 数据介绍 结果展示 完整代码 之前…

列表(定义、引用、修改、切片和用途)

什么是列表 列表是 Python 中最常用的数据类型之一。它是一种有序、可变&#xff0c;异构的数据集合&#xff0c;可以存储多个不同类型的元素。 列表的特点 列表是 Python 中的一种数据结构&#xff0c;具有以下特点&#xff1a; 有序性&#xff1a; 列表中的元素按照添加的…

【学术会议征稿】第五届计算机工程与智能控制学术会议(ICCEIC 2024)

第五届计算机工程与智能控制学术会议&#xff08;ICCEIC 2024) 2024 5th International Conference on Computer Engineering and Intelligent Control 第五届计算机工程与智能控制学术会议&#xff08;ICCEIC 2024&#xff09;将于2024年10月18日至22日在广州举办&#xff0…

improved-diffusion代码逐行理解之train

目录 代码理解1、解析命令行参数2、分布式设置和日志配置3、创建模型和扩散过程4、加载数据5、训练循环6、训练过程中的关键点7、日志和模型保存 代码 improved-diffusion代码地址&#xff1a;https://github.com/openai/improved-diffusion 运行代码会遇到的几个问题&#xf…

LDR6282-显示器:从技术革新到视觉盛宴

显示器&#xff0c;作为我们日常工作和娱乐生活中不可或缺的一部分&#xff0c;承载着将虚拟世界呈现为现实图像的重要使命。它不仅是我们与电子设备交互的桥梁&#xff0c;更是我们感知信息、享受视觉盛宴的重要窗口。显示器在各个领域的应用也越来越广泛。在办公领域&#xf…

Gradle使用插件SonatypeUploader-v2.6上传到maven组件到远程中央仓库

本文基于sonatypeUploader 2.6版本 插件的使用实例&#xff1a;https://github.com/jeadyx/SonatypeUploaderSample 发布步骤 提前准备好sonatype账号和signing配置 注&#xff1a;如果没有&#xff0c;请参考1.0博文的生成步骤&#xff1a; https://jeady.blog.csdn.net/art…

收银系统源码-营销活动-幸运抽奖

1. 功能描述 营运抽奖&#xff1a;智慧新零售收银系统&#xff0c;线上商城营销插件&#xff0c;商户/门店在小程序商城上设置抽奖活动&#xff0c;中奖人员可内定&#xff1b; 2.适用场景 新店开业、门店周年庆、节假日等特定时间促销&#xff1b;会员拉新&#xff0c;需会…

SQLServer连接异常

2. 文件夹对应的是[internal].[folders]表&#xff0c;与之相关的权限在[internal].[folder_permissions]表 项目对应的是[internal].[projects]表&#xff0c;与之相关的权限在[internal].[project_permissions]&#xff0c;版本在[internal].[object_versions]表。 环境对应…

MongoDB本地配置分片

mongodb server version: 7.0.12 社区版 mongo shell version: 2.2.10 平台&#xff1a;win10 64位 控制台&#xff1a;Git Bash 分片相关节点结构示意图 大概步骤 1. 配置 配置服务器 副本集 &#xff08;最少3个节点&#xff09; -- 创建数据目录 mkdir -p ~/dbs/confi…

华为eNSP:HCIA汇总实验

本次拓扑实验需求&#xff1a; 1、内网地址用DHCP 2、VLAN10不能访问外网 3、使用静态NAT 实验用到的技术有DHCP、划分VLAN、IP配置、VLAN间的通信&#xff1a;单臂路由、VLANIF&#xff0c;静态NAT、基本ACL DHCP是一种用于自动分配IP地址和其他网络参数的协议。 划分VLA…

新型模型架构(参数化状态空间模型、状态空间模型变种)

文章目录 参数化状态空间模型状态空间模型变种Transformer 模型自问世以来,在自然语言处理、计算机视觉等多个领域得到了广泛应用,并展现出卓越的数据表示与建模能力。然而,Transformer 的自注意力机制在计算每个词元时都需要利用到序列中所有词元的信息,这导致计算和存储复…

Butterfly主题添加动画加载效果

安装插件 安装插件,在博客根目录[Blogroot]下打开终端&#xff0c;运行以下指令&#xff1a; npm install hexo-butterfly-wowjs --save添加配置 添加配置信息&#xff0c;以下为写法示例 在站点配置文件_config.yml或者主题配置文件_config.butterfly.yml中添加 wowjs:ena…

简单介绍 Dagger2 的入门使用

依赖注入 在介绍 Dagger2 这个之前&#xff0c;必须先解释一下什么是依赖注入&#xff0c;因为这个库就是用来做依赖注入的。所以这里先简单用一句话来介绍一下依赖注入&#xff1a; 依赖注入是一种设计模式&#xff0c;它允许对象在运行时注入其依赖项。而不是在编译时确定&a…