首页 > 其他分享 >单链表入门

单链表入门

时间:2024-08-22 10:22:11浏览次数:8  
标签:结点 单链 入门 链表 地址 节点 指针

1.概念与结构

概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的 指针链接次序实现的。

2.结点

与顺序表不同的是,链表⾥的每一个都是独⽴申请下来的空间,我们称之为“结点/结点” 结点的组成主要有两个部分:当前结点要保存的数据和保存下⼀个结点的地址(指针变量)。 链表中每个结点都是独⽴申请的(即需要插⼊数据时才去申请⼀块结点的空间),我们需要通过指针 变量来保存下⼀个结点位置才能从当前结点找到下⼀个结点。

3.链表的性质

1、链式机构在逻辑上是连续的,在物理结构上不⼀定连续 2、结点⼀般是从堆上申请的 3、从堆上申请来的空间,是按照⼀定策略分配出来的,每次申请的空间可能连续,可能不连续 结合前⾯学到的结构体知识,我们可以给出每个结点对应的结构体代码: 假设当前保存的结点为整型: 当我们想要保存⼀个整型数据时,实际是向操作系统申请了⼀块内存,这个内存不仅要保存整型数 据,也需要保存下⼀个结点的地址(当下⼀个结点为空时保存的地址为空)。 当我们想要从第⼀个结点⾛到最后⼀个结点时,只需要在当前结点拿上下⼀个结点的地址就可以了。

4.链表的打印

给定的链表结构中,如何实现结点从头到尾的打印?

5.实现单链表

SList.h

1.单链表的定义

2.单链表初始化

创建一个空链表,然后构建完整的链表

为什么要创造plist,是因为我们要保证头节点的地址(第一个节点的地址)不被改变,所以要创建另一个变量进行储存。

3.申请新节点

4.单链表的插入

1.头插

用二级指针,注意当时创建plist要储存头结点的地址,要改变头节点储存的值,就要改变一级指针内的值,所以要通过二级指针传址,而传值只能改变形参,不能改变实参。

2.尾插

3.在任意位置插入

之前

之后

5.单链表的删除

1.头删

2.尾删

3.删除pos节点

4.删除pos之后的节点

6.单链表的查找

7.单链表的销毁

(小白发文,若有错误希望各位大佬指出,感谢!)

标签:结点,单链,入门,链表,地址,节点,指针
From: https://blog.csdn.net/2401_84107961/article/details/141404399

相关文章

  • Python入门最完整的基础知识大全【纯干货,建议收藏】!
    主要内容如下:1.用Python做数据分析的重要性Python在数据分析和交互、探索性计算以及数据可视化等方面都显得比较活跃,这就是Python作为数据分析的原因之一,python拥有numpy、matplotlib、scikit-learn、pandas、ipython等工具在科学计算方面十分有优势,尤其是pandas,在处理中......
  • 大模型是什么?(超详细)大模型教程入门到精通
    大模型的定义大模型是指具有数千万甚至数亿参数的深度学习模型。近年来,随着计算机技术和大数据的快速发展,深度学习在各个领域取得了显著的成果,如自然语言处理,图片生成,工业数字化等。为了提高模型的性能,研究者们不断尝试增加模型的参数数量,从而诞生了大模型这一概念。大模......
  • 【嵌入式裸机开发】智能家居入门7:最新ONENET,MQTT协议接入,最全最新(微信小程序、MQTT协
    智能家居入门7前言一、ONENET云平台创建产品与设备二、STM32端连接服务器前的准备三、STM32端实现四、微信小程序端连接服务器前的准备五、微信小程序端实现六、最终测试前言本篇文章介绍最新ONENET云平台的MQTT协议接入方法,在STM32上实现数据上云与服务器下发数据......
  • IM开发者的零基础通信技术入门(十三):为什么手机信号差?一文即懂!
    【来源申明】本文引用了微信公众号“网优雇佣军”的《是谁偷走了我家的手机信号?》文章内容。为了更好的内容呈现,下文在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作者的劳动。1、系列文章引言1.1适合谁来阅读?本系列文章尽量使用最浅显易懂的文字、图片来组织内容......
  • 一文入门ZooKeeper
    简介官网:https://zookeeper.apache.org/index.html分布式服务协调组件,GoogleChubby的开源实现。解决分布式应用中的以下问题:配置管理、命名服务(NamingService)、集群管理、统一命名服务、状态同步。用于解决分布式数据一致性问题,提供顺序一致性、原子性、单一视图、可靠性、实......
  • 大模型入门书籍推荐:动手做AI Agent(PDF版免费下载)
    动手做AIAgent人工智能时代一种全新的技术Agent正在崛起。这是一种能够理解自然语言并生成对应回复以及执行具体行动的人工智能体。它不仅是内容生成工具,而且是连接复杂任务的关键纽带。本书将探索Agent的奥秘,内容包括从技术框架到开发工具,从实操项目到前沿进展,通过带着......
  • 【Three.JS零基础入门教程】第七篇:材质详解
      前期回顾:【Three.JS零基础入门教程】第一篇:搭建开发环境【Three.JS零基础入门教程】第二篇:起步案例【Three.JS零基础入门教程】第三篇:开发辅助【Three.JS零基础入门教程】第四篇:基础变换【Three.JS零基础入门教程】第五篇:项目规划【Three.JS零基础入门教程】第六篇:物......
  • 二叉树入门学习 优势对比 以及 完全二叉树c++代码的实现
    二叉树介绍文档一、概述二叉树是一种常见的数据结构,它是一种树形结构,每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树的基本概念如下:节点(Node):二叉树的基本单元,包含一个值以及指向左右子节点的引用。根节点(Root):树的顶端节点,没有父节点。叶子节点(Leaf):没有子节......
  • CAN学习笔记(一)CAN入门
    CAN学习笔记(一)CAN入门参考链接:https://blog.csdn.net/2301_77952570/article/details/131114941CAN收发器的作用发:将TTL电平转换为CAN专用电压的差分信号收:将CAN的差分信号转换为TTL电平高低电平的定义CAN_High-CAN_Low<0.5V时候为隐性的,逻辑信号表现为"逻辑1",即高......
  • 【C语言入门】如何使用动态内存分配来模拟“大小未知”的数组
    如何使用动态内存分配来模拟“大小未知”的数组引子举例应用结语引子在C语言中,定义一个“大小未知”的数组直接是不可行的,因为数组在声明时必须有确定的大小,要么是在编译时确定的常量表达式,要么是在C99或更高标准下,允许运行时确定大小的变长数组(VLA)。变长数组(Varia......