【数据结构与算法】—— * 链表 入门(三)*

简介: 【数据结构与算法】—— * 链表 入门(三)*

前言

之前,小玄已经写过了链表相关的文章:

【数据结构与算法】—— * 链表 入门(一)*_forever_bryant的博客-CSDN博客

【数据结构与算法】—— * 链表 入门(二)*_forever_bryant的博客-CSDN博客

在这篇文章,小玄将通过实例讲解的方式来为大家进一步温习相关的内容和知识点。


基本概念

  1. 结点包括数据域指针域
  2. 链表是由 n 个结点链接成,第一个结点的存储位置叫头指针,最后一个结点的指针为“空”

1.png

typedefstructHero{
intid;   //英雄编号
char* name; //英雄名称
  //指向下一结点的指针
structHero* pNext;
}Hero;

image.png

intmain()
{
Herohero1 = { 1, "孙尚香" };
Herohero2 = { 2, "武则天" };
Herohero3 = { 2, "狂铁" };
Herohero4 = { 2, "夏侯惇" };
Herohero5 = { 2, "宫本武藏" };
  //Hero1 就是头指针
hero1.pNext = &hero2;
hero2.pNext = &hero3;
hero3.pNext = &hero4;
hero4.pNext = &hero5;
hero5.pNext = NULL;
return0;
}

链表 实例图解

下图是对上述数据基础的数据结构图:image.png

如果我们想删除3号元素和4号元素的话,只需将对应的结点进行删除,将对应的指针指向第五个元素,然后释放相关的内存空间即可4.png


链表的头指针和头点

基本概念

* 头指针 : 链表中第一个结点的储存位置

* 头结点 : 在单链表中的第一个结点前附设的一个结点5.png

异同点

       

头指针

头结点

若链表没有头结点,则是指向头指针的指针;若没有则是链表指向第一个头结点的指针;

头结点是为了操作的统一和方便而设立的,放在第一个结点之前

其数据域一般毫无意义(可以存储链表的长度)

头指针具有表示作用,所以常常用头指针表示链表的名字

有了头结点,在第一个结点前插入和删除第一个结点时,操作与其他结点的操作就统一了。

无论链表是否为空,头指针均不为空。

头指针是链表的必要元素。

头结点不一定是链表的必要元素。

如果觉得有什么意见或者是需要的话,欢迎在评论区向小玄提出哦!

冲冲冲!!

目录
相关文章
|
1月前
|
存储 算法
算法入门:专题二---滑动窗口(长度最小的子数组)类型题目攻克!
给定一个正整数数组和目标值target,找出总和大于等于target的最短连续子数组长度。利用滑动窗口(双指针)优化,维护窗口内元素和,通过单调性避免重复枚举,时间复杂度O(n)。当窗口和满足条件时收缩左边界,更新最小长度,最终返回结果。
|
1月前
|
存储 算法
算法入门:专题一:双指针(有效三角形的个数)
给定一个数组,找出能组成三角形的三元组个数。利用“两边之和大于第三边”的性质,先排序,再用双指针优化。固定最大边,左右指针从区间两端向内移动,若两短边之和大于最长边,则中间所有组合均有效,时间复杂度由暴力的O(n³)降至O(n²)。
|
1月前
|
存储 算法 编译器
算法入门:剑指offer改编题目:查找总价格为目标值的两个商品
给定递增数组和目标值target,找出两数之和等于target的两个数字。利用双指针法,left从头、right从尾向中间逼近,根据和与target的大小关系调整指针,时间复杂度O(n),空间复杂度O(1)。找不到时返回{-1,-1}。
|
4月前
|
机器学习/深度学习 数据采集 算法
你天天听“数据挖掘”,可它到底在“挖”啥?——数据挖掘算法入门扫盲篇
你天天听“数据挖掘”,可它到底在“挖”啥?——数据挖掘算法入门扫盲篇
101 0
|
存储 算法 Perl
数据结构实验之链表
本实验旨在掌握线性表中元素的前驱、后续概念及链表的建立、插入、删除等算法,并分析时间复杂度,理解链表特点。实验内容包括循环链表应用(约瑟夫回环问题)、删除单链表中重复节点及双向循环链表的设计与实现。通过编程实践,加深对链表数据结构的理解和应用能力。
216 4
|
8月前
|
机器学习/深度学习 算法 机器人
强化学习:时间差分(TD)(SARSA算法和Q-Learning算法)(看不懂算我输专栏)——手把手教你入门强化学习(六)
本文介绍了时间差分法(TD)中的两种经典算法:SARSA和Q-Learning。二者均为无模型强化学习方法,通过与环境交互估算动作价值函数。SARSA是On-Policy算法,采用ε-greedy策略进行动作选择和评估;而Q-Learning为Off-Policy算法,评估时选取下一状态中估值最大的动作。相比动态规划和蒙特卡洛方法,TD算法结合了自举更新与样本更新的优势,实现边行动边学习。文章通过生动的例子解释了两者的差异,并提供了伪代码帮助理解。
614 2
|
7月前
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
138 0
|
9月前
|
存储 机器学习/深度学习 算法
C 408—《数据结构》算法题基础篇—链表(下)
408考研——《数据结构》算法题基础篇之链表(下)。
338 30
|
9月前
|
存储 算法 C语言
C 408—《数据结构》算法题基础篇—链表(上)
408考研——《数据结构》算法题基础篇之链表(上)。
440 25
|
10月前
|
机器学习/深度学习 存储 C++
【C++数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】
本内容介绍了单链表的基本运算任务,涵盖线性表的基本概念、初始化、销毁、判定是否为空表、求长度、输出、求元素值、按元素值查找、插入和删除数据元素等操作。通过C++代码示例详细解释了顺序表和链表的实现方法,并提供了测试说明、通 - **任务描述**:实现单链表的基本运算。 - **相关知识**:包括线性表的概念、初始化、销毁、判断空表、求长度、输出、求元素值、查找、插入和删除等操作。 - **测试说明**:平台会对你编写的代码进行测试,提供测试输入和预期输出。 - **通关代码**:给出了完整的C++代码实现。 - **测试结果**:展示了测试通过后的预期输出结果。 开始你的任务吧,祝你成功!
487 5