【线性表】单链表的基本特性

【数据结构】线性表的链式存储结构--单链表 单链表的创建、插入、删除等基本操作的实现 阅读详情

本文主要讲解单链表的基本定义,实现第一个单链表程序。


初识单链表:

  1. 链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素和下一元素的地址。
  2. 链表中的数据是以结点来表示的,每个结点的构成:元素 + 指针(下一元素的存储位置)。元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

定义:

链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的,每个结点只有一个链域的链表称为单链表(Single Linked List)。

单链表特性:

  1. 物理上不连续,逻辑上连续:可以将物理地址上不连续的内存空间连接起来,通过指针来对物理地址进行操作,实现逻辑上的连续(线性)。
  2. 头指针:单链表中每个结点的存储地址是存放在其前趋结点的next域中,而开始结点无前趋,故应设头指针head指向开始结点。链表由头指针唯一确定。
  3. 尾巴:终端结点无后继,故终端结点的指针域为空,即NULL。
  4. 单链表节点定义:
typedef struct node
{
	int data;
	struct node* next;
}Node;

 

两种分类:带头结点的单链表和不带头头结点的单链表

  1. 不带头结点的单链表:也就是 head 只是一个指针,指向链表的第一个节点 。
  2. 带头结点的单链表:头结点的data不保存信息,next指针指向链表的第一个具有data域结点。

第一个单链表程序

#include <stdio.h>
#include <malloc.h>
#include <assert.h>

typedef struct node
{
	int data;
	struct node* next;
}Node; //struct node 完全等于 Node(结构体变量)
typedef Node* LinkList; //struct node * 完全等于 LinkList(结构体指针)

int main()
{
	LinkList head = (LinkList)malloc(sizeof(Node));
	assert(head != NULL);  //检查malloc之后是不是空间不够,返回了空指针NULL(WarningC6011:取消对NULL指针的引用)
	LinkList NodeAa = (LinkList)malloc(sizeof(Node));
	assert(NodeAa != NULL);
	LinkList NodeBb = (LinkList)malloc(sizeof(Node));
	assert(NodeBb != NULL);
	LinkList NodeCc = (LinkList)malloc(sizeof(Node));
	assert(NodeCc != NULL);

	head->data = 101;
	head->next = NodeAa;
	NodeAa->data = 202;
	NodeAa->next = NodeBb;
	NodeBb->data = 303;
	NodeBb->next = NodeCc;
	NodeCc->data = 404;
	NodeCc->next = NULL;

	LinkList p = head; //把链表的头结点交给指针p,去遍历
	while (p != NULL)
	{
		printf("%d  ", p->data);
		p = p->next;
	}
	return 0;
}


 

链表详解(单链表、双向链表、链表逆序) 单链表 想了解单链表的一些概念可以看我另一篇博客: 链表基础 单链表结构体定义 //单链表的结构定义 typedef struct LNode { int data; //data存放结点数据域 struct LNode *next; //指向后继结点的指针 }LNode; 单链表的建立 (1)定义单链表的数据结构; (2)读取数据; (3)生成新结点; (4)将数据存入结点的成员变量中; (5)将新结点连接到表头或表尾。 重复(2)~(5)直到输入结束。 //头插法建立单链表 void c 阅读详情

相关推荐

极验第四代滑块验证码破解(三):滑块轨迹构造

极验第四代滑块验证码破解(三):滑块轨迹构造声明 声明 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 本文关联文章超链接:

帯泪的鱼的博客 8624

【数据结构与算法 3】单链表

一、链表的特点 1、链表是一种非线性、非顺序的物理结构,是由多个节点组成。 2、链表采用的是“见缝插针”的存储方法,不要求内存连续,靠next指针关联起来。 3、链表的物理存储方式为随机存储,访问方式为顺序访问。 4、查找节点的时间复杂度为O(n),插入、删除节点的时间复杂度为O(1)。 5、链表适用于写操作多,读操作少的场景。 二、单链表 链表是有序的列表,但是它在内存中存储如下: 上图小结: 1、链表是以节点的方式来存储,是链式存储 2、每个节点包含data域,next域:指向下

学Java,找哪吒 9249

保姆级教程:在Davinci Configurator里配置BswM的ECU状态机(附状态切换流程图)

本文提供了一份详细的AUTOSAR BswM模块配置指南,通过Davinci Configurator工具实现ECU状态机的构建与管理。内容涵盖从模式请求端口创建到状态切换规则定义的全流程,特别针对Ecu State Handling进行了深入解析,并附有状态切换流程图,帮助汽车电子工程师高效完成ECU状态管理配置。

weixin_28366475的博客 410

数据结构-单链表

链表是数据结构中线性表的一种,其中的每个元素实际上是一个单独的结构体对象,而所有对象都通过每个元素中的指针链接在一起。它是以结构体为节点,将一个结构体看成数据域和指针域两个部分,数据域用于存储数据,指针域用于连接下一个节点。链表中每个结构体对象叫做节点,其中第一个数据节点叫做链表的首元节点;如果第一个节点不用于存储数据,只用于代表链表的起始点,则这个节点称为链表的头节点。

qq_54227351的博客 1999

网络调试和分析工具 Proxyman Premium

它支持MacOS、iOS和iPadOS等操作系统,提供丰富的功能,如查看和编辑HTTP/HTTPS请求和响应、设置断点、过滤请求等。Proxyman Premium还支持WebSocket、GraphQL和gRPC等现代网络协议调试,并通过直观且图形化的操作界面,使用户能高效地监控和操纵网络数据流。此外,它还具备多种高级功能,如WebSocket支持、DNS欺骗、自定义SSL证书等,为开发人员提供极大的便利。同时,由于软件版本更新和界面调整,上述步骤可能会有所变化,建议您参考最新版本的官方文档进行操作。

llhf688的博客 1997

文献综述三大痛点用AI轻松解决!借助Gemini 3 Pro搞定检索难、阅读慢、框架乱问题(附 AI 提示词)

4)“漏斗式”结构:先介绍宏观领域的研究现状,再缩小范围,聚焦于与你课题直接先关的子领域,深入探讨与你研究变量直接相关的文献, 指出前人没做过、没做全或结论有矛盾的地方,再顺势提出你的研究课题,这种结构逻辑最清晰,能直接引导读者发现你研究的必要性。想要有针对性的搜到相关文献,必须先把模糊的研究题目拆解成精准的检索语言,这个时候就需要建立一个关键词矩阵,如核心词、同义词、学术术语、上下位词,以及对应的英文表达。请围绕【我的研究主题/关键词】,检索近5年发表的高被引的中英文文献,优先选择顶刊综述/论文。

智能AI让学术科研更容易 277

深度理解单链表

以自行车的链条来比喻我们的单链表,或者双链表 单链表是线性表的一种,因为从逻辑上来看单链表是一条线节点由指针域和数据域组成,所以一个节点含有两个不同类型的元素,那么我们学过的知识中,那种数据类型可以 保存不同类型的元素呢,那就是结构体,所以我们可以用结构体来定义一个节点 struct node { int id;//数据域,节点要保存的数据 struct node*next://指针成员,用于指向下一节点 }; 单链表只要知道一个节点,那么就可以知道之后的任意节点位置,直接通过...

m0_65334415的博客 1952

SAP CAP 编程模型简介

官网 CAP 是用于构建企业级服务和应用程序的语言、库和工具框架。它引导开发人员沿着经过验证的最佳实践和大量现成的解决方案来应对重复性任务的“黄金之路”。 基于 CAP 的项目受益于对领域的主要关注。我们没有深入研究过于技术性的学科,而是专注于在快速变化的云技术世界中加速开发和保护投资。 CAP 框架融合了经过验证和广泛采用的开源和 SAP 技术,如下图所示。 在开源技术之上,CAP主要增加了: 核心数据服务 (CDS) 作为我们用于域模型和服务定义的通用建模语言。 用于 Node.js 和 Ja

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1545

单链表(c语言数据结构)

老师的代码如下: #include<stdio.h> #include<malloc.h> /* *Linked list of characters. The key is data. */ typedef struct LinkNode{ char data; struct LinkNode *next; }LNode, *LinkList, *NodePtr; /** * Initialize the list with a header. *@return The p

awm123453的博客 3752

0.1 专栏导读:为什么需要从 MM 理解 HMM

本文探讨了GPU计算框架中CPU与GPU内存管理的困境,介绍了Linux内核的HMM(Heterogeneous Memory Management)解决方案。传统显式拷贝模型存在编程复杂、指针失效等问题,而HMM通过共享虚拟地址空间、自动页面迁移等机制实现透明内存管理。文章分析了HMM依赖的Linux内存管理基础设施,包括页表遍历、MMU通知、ZONE_DEVICE等核心组件,并梳理了从经典MM到支持异构设备的进化历程。最后给出了学习HMM的8层知识体系,强调理解底层MM机制是掌握HMM的关键。

图形/计算GPU的驱动与虚拟化技术分享园地 761

FastAPI 极简教程(偏实战,一篇搞定)

本文是一篇FastAPI实战教程,通过最少的概念讲解快速掌握FastAPI的核心功能。文章首先介绍FastAPI是基于Starlette和Pydantic的高性能Python API框架,具有自动生成文档、类型驱动校验、异步支持和依赖注入等优势。教程从安装环境开始,演示了如何创建最小项目并编写第一个"Hello World"接口。接着详细讲解了路由参数处理(Path/Query/Body)、Pydantic数据模型校验、响应模型控制、状态码设置等核心功能。在高级功能方面,重点介绍了错误处

AI天才研究院 812

【数据结构】单链表的特点

这篇文章到这里就结束了如果觉得这篇博客对你有用的话,别忘记三连哦。我是豌豆射手^,让我们我们下次再见。

m0_74195174的博客 1455

HLA分型

HLA分型 一、根据WES的tumor数据进行数据分型 选用hlahd 软件安装及使用 [root@18605fd8771e ~]# wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip [root@18605fd8771e ~]# unzip bowtie2-2.4.1-linux-x86_64.zip && mv bowtie2-2.4.1

qq_23435961的博客 2487

【线性表】链表:循环单链表、双链表、循环双链表的基本特性

链表不仅作为链式存储的一种实现方式,还表达了计算机不连续(离散)的存储思想。

极客-多重人格递归 2961

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据结构3_线性表 _单链表的基本操作及实现

数据结构3_线性表_2 总览: 线性表: 线性表是具有相同数据类型的n(n>=0)个数据元素的有序序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,其一般表示为: L=(a1,a2,a3,a4,∗∗∗,an) L = (a1,a2,a3,a4,***,an) L=(a1,a2,a3,a4,∗∗∗,an) a1为表头元素,an为表尾元素,除了an其他元素都有唯一的直接后继,除...

毛钱儿的博客 1830

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

考研数据结构-线性表

线性表的基本概念与实现 1.线性表的定义 线性表是具有相同特征数据元素的一个有限序列。 元素个数叫做线性表的长度,n(n>=0)表示,n=0(空表) 2.线性表的逻辑特性 只有一个表头元素,只有一个表尾元素。表头无前驱,表尾无后继,除表头和表尾外,其他元素只有一个直接前驱,也只有一个直接后继。 3.线性表的存储结构 顺序存储结构(顺序表)和链式存储结构(链表)两种。 顺序表 ​ 连续存储、顺...

jieshenai的博客 510

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

线性表 考研数据结构笔记

线性表 一.线性表的基本概念 1.线性表的定义 线性表是具有相同特性数据元素的有限序列。该序列中所含元素的个数叫线性表的长度,用n(n>=0)表示。注意,n可以等于零,表示一个空表。 线性表有序序列,数据元素具有相同的特性,线性表可以有无性。 2.线性表的逻辑特性 其他元素只有一个直接前驱,也直接后继。 3.线性表的存储结构 线性表存储结构有顺序结构和链式存储结构。前者是顺序表,后者为链表。 (1)顺序表 顺序表把线性表的所有元素按照其逻辑顺序,依次存储到从指定的存储位置开始的一块连续的存储结构空间中

qq_41069833的博客 2670

第二章—线性表

线性表线性表的基本概念和实现线性表的定义线性表的逻辑特性线性表的存储结构常见问题线性表的结构体定义和基本操作线性表的结构体定义顺序表的操作单链表的操作双链表的操作循环链表的操作逆置问题 线性表的基本概念和实现 线性表的定义 线性表是具有相同特性数据元素的一个有限序列。该序列中所含元素的个数叫做线性表的长度,用n表示。注意:n可以等于0,表示线性表是一个空表。 线性表是一种简单的数据结构,可以把它想象成一队学生。学生人数对应线性表的长度,学生人数是有限的,这里体现了线性表是一个序列;队中所有人的身份是学生,体

笑忘书丶 8433

程序员基本功09 线性表

I(Information)信息、T(Technology)技术,编程的本质是对数据的处理。数据结构就是研究数据之间的逻辑关系、存储方式及其操作的学问。 从数据的逻辑结构来分,数据元素之间存在的关系被称为数据的逻辑结构。大致分为四种: 集合:数据元素之间只有“同属于一个集合”关系。 线性结构:数据元素之间存在一个对一个的关系 树形结构:数据元素之间存在一个对多个的关系 图形结构或网状结...

NEVERGUVEIP的博客 227

线性表的链式表示:单链表的定义及基本操作(C语言)

一、定义 线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素(即逻辑上相邻的数据元素在物理上不一定相邻)。 特点是顺序存取,查找需从第一个结点出发,逐个往下搜索;但插入和删除操作不需移动大量元素只需修改相关结点的指针域,空间分配灵活。 通常用头指针来标识一个单链表,此外,为了操作方便,在单链表第一个结点之前附加一个结点,称为头结点(如图)。 单链表的结点类...

xiaoyeren_ITRoad的博客 868

线性表:顺序表&单链表

线性表 定义 由同类型数据元素构成有序序列的线性结构 表中元素个数为线性表的长度 无元素,称空表 起始位置:表头, 结束位置:表尾 抽象数据类型描述 类型名称:线性表(list) 抽象数据类型:数据对象、操作集 数据对象集:线性表的数据对象集合为{a1,a2,…,an},每个元素的类型均为DataType。其中,除了第一个元素a1外,每一个元素有且只有一个直接前驱元素,除最后一个元...

Trista2hong的博客 473

数据结构之线性表

线性表线性表的基本概念线性表的逻辑特性线性表的存储结构链表的五种形式 线性表的基本概念 线性表是具有相同数据元素的一个*有限序列*,线性表可以为空,线性表可以是有序的,也可以是无序的 线性表的逻辑特性 表头元素没有前驱和表尾元素没有后驱,其他元素只有一个直接前驱和直接后驱。 什么是前驱? 什么是后驱? 线性表的存储结构 顺序存储结构:顺序表 将线性表中的所有元素按照逻辑顺序,将数据存储到指定的一块存储空间中,按照顺序依次排开,特点:支持随机访问 只需知道第一个元素的位置,即可推算得到其他元素的位置,即顺序表

qq_43536177的博客 632

数据结构与算法《线性表》

开发工具与关键技术: 作者:木有窝的鸟~小通 撰写时间:2020年5月15日 线性表: 1、线性表是复合数据类型,这种类型的线性表称为复合线性表。 2、而线性表的主要特征如下: (1).在非空的线性表,有且仅有一个开始结点a1,它内有直接前趋,而仅有一个直接后继a2. (2).有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前趋an-1; (3).其余的内部结点ai(2≦i≧n-1)都有且仅有一个直接前趋ai-1和一个直接后继ai+1。 3、线性表的基本运算: 求表长——.

weixin_44548473的博客 251

线性表的基本概念

/-------------------初始化双向循环链表*-----------------------//-------------------初始化双向链表*-----------------------//-------------------循环双向链表的存储结构-------------------//-------------------双向链表的存储结构-------------------//-------------------单链表的存储结构-------------------

qq_51691366的博客 859

线性表的链式存储结构:单链表

线性表的链式存储-链表线性表中每个节点有唯一的前趋节点和后继节点 *每个 物理节点增加一个指向后继节点的指针域–>单链表 *每个物理节点增加一个指向后继节点和前趋节点的指针域–>双链表 单链表的特点 当访问一个节点后,只能接着它的后继节点,而无法访问它的前趋节点。插入节点与删除节点操作1.单链表插入节点操作:将值为x的新节点*s插入到 *p节点之后 特点:只需修改相关的节点指针

超帅哥哥的人生巅峰 564

浅谈线性表

线性表的基本概念及其存储结构的介绍

King的博客 448
上一篇: 【线性表】顺序表的基本特性
下一篇: 【线性表】链表:循环单链表、双链表、循环双链表的基本特性
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值