数据结构—单链表(类C语言描述)

【数据结构|C语言版】单链表应用 各位小伙伴大家好!上期小编给大家讲解了数据结构中的顺序表,接下来讲讲顺序表该如何应用。以上就是小编对顺序表应用的讲解。如果觉得小编讲的还可以,还请一键三连。互三必回!持续更新中~! 阅读详情
单链表


1、链接存储方法


 链接方式存储的线性表简称为链表(Linked List)。
 链表的具体存储表示为:
  ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)
  ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))
注意:
  链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。

2、链表的结点结构
┌──┬──┐
│data│next│
└──┴──┘ 
 data域--存放结点值的数据域
 next域--存放结点的直接后继的地址(位置)的指针域(链域)
注意:
  ①链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的。
 ②每个结点只有一个链域的链表称为单链表(Single Linked List)。

3、头指针head和终端结点指针域的表示
 单链表中每个结点的存储地址是存放在其前趋结点next域中,而开始结点无前趋,故应设头指针head指向开始结点。
注意:
 链表由头指针唯一确定,单链表可以用头指针的名字来命名。
【例】头指针名是head的链表可称为表head。
  终端结点无后继,故终端结点的指针域为空,即NULL。

4、单链表的一般图示法
 由于我们常常只注重结点间的逻辑顺序,不关心每个结点的实际位置,可以用箭头来表示链域中的指针,线性表(bat,cat,fat,hat,jat,lat,mat)的单链表就可以表示为下图形式。


5、单链表类型描述
typedef char DataType; //假设结点的数据域类型为字符
typedef struct node{ //结点类型定义
DataType data; //结点的数据域
struct node *next;//结点的指针域
}ListNode;
typedef ListNode *LinkList;
ListNode *p;
LinkList head;
注意:
 ①LinkList和ListNode *是不同名字的同一个指针类型(命名的不同是为了概念上更明确)
 ②LinkList类型的指针变量head表示它是单链表的头指针
 ③ListNode *类型的指针变量p表示它是指向某一结点的指针


6、指针变量和结点变量

┌────┬────────────┬─────────────┐ 
│    │    指针变量    │     结点变量     │
├────┼────────────┼─────────────┤
│ 定义 │在变量说明部分显式定义 │在程序执行时,通过标准 │
│ │ │函数malloc生成 │
├────┼────────────┼─────────────┤
│ 取值 │ 非空时,存放某类型结点 │实际存放结点各域内容 │
│ │的地址 │ │
├────┼────────────┼─────────────┤
│操作方式│ 通过指针变量名访问 │ 通过指针生成、访问和释放 │
└────┴────────────┴─────────────┘

①生成结点变量的标准函数
 p=( ListNode *)malloc(sizeof(ListNode));
//函数malloc分配一个类型为ListNode的结点变量的空间,并将其首地址放入指针变量p中
②释放结点变量空间的标准函数 
 free(p);//释放p所指的结点变量空间
③结点分量的访问 
  利用结点变量的名字*p访问结点分量
方法一:(*p).data和(*p).next
方法二:p-﹥data和p-﹥next
④指针变量p和结点变量*p的关系 
  指针变量p的值——结点地址
 结点变量*p的值——结点内容
 (*p).data的值——p指针所指结点的data域的值
 (*p).next的值——*p后继结点的地址
  *((*p).next)——*p后继结点
注意:
  ① 若指针变量p的值为空(NULL),则它不指向任何结点。此时,若通过*p来访问结点就意味着访问一个不存在的变量,从而引起程序的错误。

  ② 有关指针类型的意义和说明方式的详细解释,【参考C语言的有关资料】。

转载自:https://www.2cto.com/kf/201406/308111.html

CubeMX实战:ETH+LWIP+FreeRTOS网络工程从零搭建与AC6编译优化 本文手把手教你使用STM32CubeMX从零搭建集成以太网(ETH)、LWIP协议栈和FreeRTOS的嵌入式网络工程。文章详细解析了外设配置、协议栈调优、任务规划等关键步骤,并重点分享了如何解决ARM Compiler 6(AC6)的兼容性问题,实现编译速度与稳定性的双重提升,助你快速构建稳定的网络应用原型。 阅读详情

相关推荐

基于Simulink的直流电机双闭环调速系统抗扰动仿真与参数优化

本文详细介绍了基于Simulink的直流电机双闭环调速系统仿真与参数优化方法。通过构建转速外环与电流内环的仿真模型,阐述了利用工程设计法整定PI参数的核心步骤,并重点探讨了如何优化系统参数以增强其抗负载突变等扰动的能力,实现快速、平稳的调速性能。

weixin_29061997的博客 192

创建单链表2

#include <stdio.h> #define elemtype int #define NULL 0 typedef struct node { elemtype data; struct node * next; }node; void main() { node *p; p=(node *)malloc(sizeof(node)); if(!p)

Tinide的专栏 587

【阿里云大模型高级工程师ACP习题集】2.3 优化提示词改善答疑机器人回答质量

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1629

6-5 用头插法创建单链表 数据结构实训(c/c++编程题)

LinkList是函数返回的头指针类型。

m0_62351105的博客 1330

新手避坑指南:用COMSOL Multiphysics仿真气体放电(汤逊vs.流注)

本文详细介绍了使用COMSOL Multiphysics仿真气体放电的实战指南,涵盖汤逊理论和流注模型的实现方法。通过对比两种放电模型的关键参数和物理场配置,帮助新手避免常见错误,准确预测气体击穿过程。文章还提供了工程应用案例,如高压绝缘子设计优化,展示了仿真技术在电力设备绝缘设计中的实际价值。

weixin_28716181的博客 472

VS2022+Qt6保姆级配置指南:从插件安装到项目互通全流程(附常见错误解决)

本文提供了一份详细的Visual Studio 2022与Qt6集成开发环境配置指南。从插件安装、环境搭建到项目创建与互通,涵盖了全流程操作步骤,并针对常见的配置错误和调试问题提供了实用的解决方案,帮助开发者高效构建企业级桌面应用。

nginx7reverse的博客 1203

用c语言描述单链表的数据类型,数据结构—单链表(类C语言描述)

单链表1、链接存储方法链接方式存储的线性表简称为链表(Linked List)。  链表的具体存储表示为:   ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)   ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(li...

weixin_33344952的博客 1393

扩散模型在工业缺陷检测中的应用与优化

扩散模型作为生成式AI的重要分支,通过逐步去噪的逆向过程实现高质量数据生成。其核心U-Net架构结合残差连接和时间步嵌入,特别适合处理工业场景中的细微缺陷检测。在计算机视觉领域,这种技术突破了传统深度学习模型对小样本数据的限制,通过域自适应预训练和小样本微调两阶段框架,显著提升金属表面、纺织品等复杂场景的检测准确率。关键技术实现涉及噪声调度优化、多任务损失设计等工程实践,最终在MVTec AD等工业数据集上达到90%以上的检测精度,为智能制造提供可靠的自动化质检方案。

weixin_30512043的博客 497

C语言数据结构之链表

目录 1.什么是链表 2.链表的定义 3.链表的分类 4.动态内存分配 4.1.malloc函数 4.2.动态数组的构造 4.3.动态内存和静态内存的比较 4.链表的创建 5.遍历链表 6.链表节点的插入 7.链表节点的删除     1.什么是链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(...

广源的博客 3542

2月底速申!国家超算互联网免费算力全攻略|编程小白零消耗实操首测_2026-02-26

2月底速申!国家超算互联网免费算力全攻略|编程小白零消耗实操首测作为一名编程小白,我目前正在学习编译和运行 Qt 框架,也在逐步摸索开发环境的配置方法,目标是打造一款属于自己的个人效率工具。就在这时,我挖到了一个国家级硬核福利:国家超算互联网核心节点开放免费试运行!哪怕是零基础如我,也能申领到 100 卡时异构加速卡算力,关键是——2 月底前申请更稳妥,早占位早使用。

qq_58517981的博客 2099

IVP 2021 UNETR: Transformers for 3D Medical Image Segmentation

动机 具有跟踪和扩展路径的全卷积神经网络(FCNNs)(如编码器和解码器),近年来在各种医学图像分割应用中显示出了突出的地位。在这些体系结构中,编码器通过学习全局上下文表示来扮演一个不可或缺的角色,该全局上下文表示将进一步用于解码器的语义输出预测。 卷积层作为FCNN的主要构造块,其局部性限制了此类网络学习长时空间依赖的能力。 在NLP领域,基于transformer的模型已经在各种任务中实现了最先进的基准。transformer中的自我注意机制使他们能够动态地突出词序列的重要特征并学习其长时依赖关系。这

smile909的博客 1979

数据结构——单链表详解(C语言实现)

首先,我们需要知道,单链表内所需要的数据有两种,一种是数据,还有就是下一个节点的指针。所以我们需要定义一个结构体。//重命名单链表的数据 //便于不同数据类型的切换 typedef struct SLTNode {//SLTNode* next//错误 //改写法C语言是不支持的 //struct SLTNode//错误 } SLTNode;

sinzz的博客 1620

详解大端模式和小端模式

详解大端模式和小端模式 一、大端模式和小端模式的起源         关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令

ce123的技术博客 19万+

关于c语言数据结构--单链表

适合初学c语言单链表的新手

m0_73823782的博客 532

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数据结构(c语言版)——单链表的定义

数据结构(c语言版)——单链表的定义

A5437942的博客 647

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【数据结构】单链表的c语言实现

单链表的c语言实现 文章目录单链表的c语言实现定义单链表结构体初始化单链表操作头插法创建单链表尾插法创建单链表计算单链表的长度获取单链表中元素新元素插入单链表删除链表中某元素单链表的整表删除打印出整个单链表 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单元可以是连续的也可以是不连续的。为了建立起数据元素之间的关系,对于每个数据元素除了存放数据元素自身的信息外,还必须有包含的指示...

只鱼 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【 数据结构 】单链表的实现 - 详解(C语言版)

前言 简单用C语言来描述数据结构中的单链表,本文实现的只是简单的无头单链表,包括单链表的增加数据,删除数据,查找指定数据,修改指定数据,也就是简单的增删查改等操作。

上上谦. 的博客 1万+

C语言数据结构 单链表的建立、遍历、查找、插入和删除操作

链表(Linked List)是一种物理存储单元上非连续、非顺序的数据结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表由一系列结点(node,链表中每一个元素称为结点)组成,每一次为一个结构体 动态分配的内存空间,可称之为一个结点,每个结点之间可以是不连续的,但结点内是连续的。结点个数是不受限定的,可以随时删改,这是与数组相比的优点。.........

追求。 1万+

【数据结构】单链表的基本操作 (C语言版)

【数据结构】单链表的基本操作 (C语言版)

weixin_56814370的博客 5655

【数据结构】单链表的增删查改(C语言实现)

单链表的增删查改操作(C语言实现)。

在平淡的日子里寻找存在的价值 5234

数据结构——单链表(C语言实现)

单链表的基本操作有 初始化,头插,尾插,按位置插,头删,尾删,按位置删,查找,按值删,获取有效值个数,判空,清空,销毁,打印 - 单链表是一种链式存取的数据结构,链表中的数据是以结点来表示的,每个结点的构成:==元素(数据元素的映象)== + ==指针(指示后继元素存储位置)==,元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示的线性表称作线性链表(单链表),单链表是链式存取的结构。

weixin_57154303的博客 4582

数据结构C语言 单链表(插入、删除、查找)

数据结构C语言 单链表(插入、删除、查找) 1、插入 假设_A_的临时指针为 “p” ,C_的临时指针为 “q“。 步骤1: _ 删除这条连接线; 步骤2: 将p->next给q->next; 步骤3: 将q给p->next; 插入代码 q->next = p->next; p->next = q; 2、删除 假设_A_的临时指针为 “p” ,_B_的临时指针为 “q“。 步骤1: 删除这条连接线; 步骤2: 删除这条连接线; 步骤3: 将p->next给q,接着

更多资料私我 7497

C语言--单链表

C语言中的单链表是一种常见的数据结构,用于存储和组织数据。在C语言中,可以使用指针和动态内存分配来实现单链表。单链表在C语言中有着广泛的应用,能够帮助程序员解决各种实际的数据组织和操作问题。

会思想的苇草i的博客 9775

C语言——单链表

一,链表的定义 链表是一种常见的采用动态存储分配方式的数据结构。在链表中,有一个头指针变量,用这个指针保存一个地址,头指针指向一个变量,这个变量称为元素。链表中,每一个元素包括两部分:数据部分和指针部分。数据部分用来存放元素中包含的数据,指针部分用来指向下一个元素 。(最后一个元素指向NULL) 在链表中,第一个结点前虚假一个头结点,头指针指向头结点,头结点的指针域指向第一个实际有效结点,该节点可以称为首元结点。 确定一个链表需要一个参数:头指针,通过头指针可以推算出链表其他所有的参数 二,单链表

qq_62755767的博客 5806

数据结构——创建一个带头节点的单链表(C语言)

基础的单链表的构建,以及前插法、后插法在输入数据时的应用。还有一些细小的不同引发的非法访问及其解决方法。

weixin_73849400的博客 7391

数据结构之单链表的排序(C语言实现)

数据结构之单链表的排序 一、 实现的步骤 1、生成一个单链表 2、对生成的链表排序 二、实现代码 #include

qq_42752472的博客 6640
上一篇: 相同MAC地址,相同IP的两天电脑为什么可以同时上网互不影响(转自Nothel的blog)
下一篇: 0-能量消耗问题
outer_star
博客等级 码龄14年 8粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值