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

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

前言

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

【数据结构与算法】—— * 链表 入门(一)*_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月前
|
存储 算法 Perl
数据结构实验之链表
本实验旨在掌握线性表中元素的前驱、后续概念及链表的建立、插入、删除等算法,并分析时间复杂度,理解链表特点。实验内容包括循环链表应用(约瑟夫回环问题)、删除单链表中重复节点及双向循环链表的设计与实现。通过编程实践,加深对链表数据结构的理解和应用能力。
57 4
|
1天前
|
数据库
数据结构中二叉树,哈希表,顺序表,链表的比较补充
二叉搜索树,哈希表,顺序表,链表的特点的比较
数据结构中二叉树,哈希表,顺序表,链表的比较补充
|
27天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
53 5
|
1月前
|
存储 C语言
【数据结构】手把手教你单链表(c语言)(附源码)
本文介绍了单链表的基本概念、结构定义及其实现方法。单链表是一种内存地址不连续但逻辑顺序连续的数据结构,每个节点包含数据域和指针域。文章详细讲解了单链表的常见操作,如头插、尾插、头删、尾删、查找、指定位置插入和删除等,并提供了完整的C语言代码示例。通过学习单链表,可以更好地理解数据结构的底层逻辑,提高编程能力。
95 4
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
算法
数据结构之购物车系统(链表和栈)
本文介绍了基于链表和栈的购物车系统的设计与实现。该系统通过命令行界面提供商品管理、购物车查看、结算等功能,支持用户便捷地管理购物清单。核心代码定义了商品、购物车商品节点和购物车的数据结构,并实现了添加、删除商品、查看购物车内容及结算等操作。算法分析显示,系统在处理小规模购物车时表现良好,但在大规模购物车操作下可能存在性能瓶颈。
49 0
|
1月前
|
机器学习/深度学习 算法 Python
机器学习入门:理解并实现K-近邻算法
机器学习入门:理解并实现K-近邻算法
36 0
|
1月前
|
C语言
【数据结构】双向带头循环链表(c语言)(附源码)
本文介绍了双向带头循环链表的概念和实现。双向带头循环链表具有三个关键点:双向、带头和循环。与单链表相比,它的头插、尾插、头删、尾删等操作的时间复杂度均为O(1),提高了运行效率。文章详细讲解了链表的结构定义、方法声明和实现,包括创建新节点、初始化、打印、判断是否为空、插入和删除节点等操作。最后提供了完整的代码示例。
68 0
|
1月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
210 9