【头指针,头结点、首元节点】

article/2025/11/9 0:43:48

链表中第一个结点的存储位置叫做头指针,那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点,其实就是上一个的后继指针指向的位置。

这里有个地方要注意,就是对头指针概念的理解,这个很重要。“链表中第一个结点的存储位置叫做头指针”,如果链表有头结点,那么头指针就是指向头结点数据域的指针。画一个图吧。

 

头指针就是链表的名字。头指针仅仅是个指针而已。

  • 头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。
  • 有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。
  • 首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。
  • 头结点不是链表所必需的。
  • 是的,对于头指针,我们也可以有相应的理解了。
  • 在线性表的链式存储结构中,头指针是指链表指向第一个结点的指针,若链表有头结点,则头指针就是指向链表头结点的指针。
  • 头指针具有标识作用,故常用头指针冠以链表的名字
  • 无论链表是否为空,头指针均不为空。头指针是链表的必要元素。
  • 单链表也可以没有头结点。如果没有头结点的话,那么单链表就会变成这样:

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //这里插入关于链表中有无头节点进行初始化链表知识  
  2. //首先明白头指针与头结点的关系:http://www.nowamagic.net/librarys/veda/detail/1805  
  3. //定义结点的结构体  
  4. //typedef struct LNode{  
  5. //  int data;  
  6. //  struct LNode *next;  
  7. //}LNode,*LinkList;//则定义LinkList L;时,L为链表的头指针。  
  8. //  
  9. //L=(LinkList) malloc (sizeof(LNode)); //创建一个结点,此处返回给L的是一个指针,并且赋给了头指针。  
  10. //L->next=null; //这里说明我创建了一个头结点,即同时运用了头指针和头结点。  
  11. //这么方便只要加上->next就说明创建了头节点。不过你想想头指针是没有next的,只有头结点才有,所以就不难理解了  
  12.   
  13.   
  14. //带头结点初始化  
  15. //Node *head;  //声明头结点  
  16. //首先第一眼看到(*head)->next=NULL;和我们刚才所说是不是一样,只要头指针一旦运用了next操作就自动创建了头结点  
  17. //但是我们今天的重点不在于这个,更多在于Node **head,对于两个指针的操作理解  
  18. //第一个指针*head,表明了head这个指针变量存储的是另外一个指向结构体NODE的指针,第二个指针,即*head作为一个整体  
  19. //其结果是一个指针,其指向的内容就是结构体NODE。经过这么一理解,对于头指针,头结点,首元节点的关系就非常明朗了  
  20. //  void InitList(Node **head){  
  21. //      *head=(Node *)malloc( sizeof(Node));//这里需要明确的第一点,申请内存返回的都是地址  
  22. //      //第二点就是(Node *)表明了其返回的指针指向最后的结果是NODE的结构体,如果是指向int,那么我们就写(int *)  
  23. //      (*head)->next=NULL;  
  24. //}  
  25.   
  26.   
  27. //带头结点尾方便了首元节点和其他节点一样,统一了操作  
  28.     //方式一:  
  29. //  void CreatList(Node **head){  
  30. //      Node *r=*head,*s;//因为前面已经对头结点,头指针初始化过了,因此可以直接使用*head  
  31. //      int a;  
  32. //      while(scanf("%d",&a)){  
  33. //          if(a!=0){  
  34. //              s=(Node *)malloc(sizeof(Node));  
  35. //              s->value=a;  
  36. //              r->next=s;//这里没有着急设置s->next,原因在于后续还要插入数据。因此将s赋值给r  
  37. //              r=s;      
  38. //          }  
  39. //          else{      
  40. //              r->next=NULL;//如果后续输入的数据为空,则就将其设置为null  
  41. //              break;      
  42. //          }  
  43. //      }  
  44. //}  
  45. <span class="comment" style=%

http://chatgpt.dhexx.cn/article/efHaesMW.shtml

相关文章

单链表:头指针 头结点 首元结点区别与联系

单链表组成&#xff1a;头指针头结点第一个结点第二个结点第三个结点.............第N个结点。 注意下图中&#xff1a;首元结点就是第一个结点。 头指针&#xff1a;作用&#xff1a;1.头指针的名字就是本链表的名字 2.头指针也是一个指针&#xff0c;存放头节点地址 头结…

链表:头结点

简介&#xff1a; 头结点的数据域可以不存储任何信息&#xff0c;头结点的指针域存储指向第一个结点的指针&#xff08;即第一个元素结点的存储位置&#xff09;。头结点的作用是使所有链表&#xff08;包括空表&#xff09;的头指针非空&#xff0c;并使对单链表的插入、删除操…

头指针和头结点

在了解头指针和头结点之前&#xff0c;先介绍数据域、指针域、结点和链表的定义&#xff1a; 数据域用来存储元素的数值数据 指针域存储直接后继节点的存储位置 结点是数据元素的存储映像。由数据域和指针域两部分组成 链表 n个结点由指针链组成一个链表。它是线性表的链式…

关于链表中头指针和头结点的理解

线性表使用顺序&#xff08;数组&#xff09;存储时有个弊端&#xff0c;那就是在插入和删除时需要大量的移动数据&#xff0c;这显示是非常消耗时间的&#xff0c;所以可以采用链式存储&#xff0c;即有一个指针域&#xff08;单链表&#xff09;&#xff0c;来记录下个结点的…

首元结点,头结点,头指针区别

https://www.cnblogs.com/letianpaiai/p/13227755.html 首元结点就是指链表中存储的第一个数据元素的结点&#xff0c;就是结点Li 头指针是指向链表中的第一个结点的指针&#xff0c;如果有头结点&#xff0c;那么头指针所指结点为头结点&#xff0c;否则为首元结点 头结点是…

头指针、头结点、首元结点概念区别

转自&#xff1a;https://blog.csdn.net/liangxingda/article/details/52755800 链表中第一个结点的存储位置叫做头指针&#xff0c;那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点&#xff0c;其实就是上一个的后继指针指向的位置。 这里有个地方要注意&a…

链表的头节点理解

不管带不带头节点&#xff0c;头指针始终指向第一个结点&#xff0c;头指针始终指向第一个结点&#xff0c;而头节点是带头结点的链表的第一个结点&#xff0c;结点内通常不存储信息。 图示如下&#xff1a; 2.在建立链表时&#xff0c;如果是不带头节点&#xff0c;第一个结…

头结点的作用

数据结构中&#xff0c;在单链表的开始结点之前附设一个类型相同的结点&#xff0c;称之为头结点。头结点的数据域可以不存储任何信息&#xff0c;头结点的指针域存储指向开始结点的指针&#xff08;即第一个元素结点的存储位置&#xff09;。 作用 1、防止单链表是空的而设的&…

头结点和头指针的区别

地址&#xff1a; 头指针和头结点的区别&#xff1a;头指针&#xff1a; 头结点&#xff1a; 地址&#xff1a; https://blog.csdn.net/u013593035/article/details/45953605?ops_request_misc%257B%2522request%255Fid%2522%253A%2522162688192816780255294435%2522%252C%…

链表、头指针、头结点

图1为线性表&#xff08;ZHAO, QIAN, SUN, LI, ZHOU, WU, ZHENG, WANG&#xff09;的逻辑状态。头指针 指示链表中第一个结点&#xff08;即第一个数据元素的存储映像&#xff09;的存储位置。同时&#xff0c;由于最后一个数据元素没有直接后继&#xff0c;则线性链表中最后…

头结点和头指针的详解

文章目录 头结点和头指针的详解1. 什么是结点&#xff1f;2. 链表最后一个元素3. 头结点4. 头指针 头结点和头指针的详解 1. 什么是结点&#xff1f; 为了表示每个数据元素ai与其直接后续元素ai1之间的逻辑关系&#xff0c;对于数据元素ai来说&#xff0c;除了存储其本身的信息…

头指针VS头结点 以及 如何理解头结点

头指针VS头结点 头指针和头结点是两个不同概念。 链表是它们的范畴。 1.头指针是指向链表第一个节点的指针&#xff0c;如果此链表第一个节点是头结点&#xff0c;那么头指针就指向头结点。 2.头结点内通常不储存数据&#xff0c;但不排除例外&#xff0c;有时候可能会储存链…

【头结点】【头指针】【首元结点】

2022 -1-14 文章目录 2022 -1-141. 定义&#xff1a;2. 哨兵&#xff08;头结点&#xff09;3. 有无头结点的单链表的创建3.1 有头结点3.1.1 头插法&#xff1a;3.1.2 尾插法&#xff1a; 3.2 无头结点3.2.1 头插法&#xff1a;3.2.2 尾插法&#xff1a; 1. 定义&#xff1a; …

python 链表中头结点的含义以及引入头结点的作用

一、概念 头结点:是虚拟出来的一个结点&#xff0c;不保存数据。头结点的next指针指向链表中的第一个节点。对于头结点&#xff0c;数据域可以不存储任何信息&#xff0c;也可存储如链表长度等附加信息。头结点不是链表所必需的。 头指针:是指向第一个结点的指针,如果链表没有…

数据结构:头指针,头结点详解(新手.小白)

如果不想看定义的话&#xff0c;可以看我的第二部分&#xff0c;里面有我自己遇到的一些疑难。 下文中出现的有关于java的&#xff0c;也有c语言的指针&#xff08;可以看成java的引用变量&#xff09;&#xff0c;觉得写得不好&#xff0c;多多包涵 目录 (一&#xff09;…

头结点的含义以及引入头结点的作用

一、概念 头结点:是虚拟出来的一个节点&#xff0c;不保存数据。头结点的next指针指向链表中的第一个节点。对于头结点&#xff0c;数据域可以不存储任何信息&#xff0c;也可存储如链表长度等附加信息。头结点不是链表所必需的。 头指针:是指向第一个结点的指针,如果链表没有…

qpython 3h下载_【分享】QPython 3H3.0.0 一个伟大的脚本编辑器!

这有点。。。东西!!! 【应用名称】&#xff1a;QPython 3H 【应用版本】&#xff1a;3.0.0 【应用大小】&#xff1a;25.41M 【软件介绍】&#xff1a; 这个软件集成了Python3解释器、Console控制台、QEdit编辑器和SL4A库&#xff0c;可以直接在安卓手机上运行Python代码&…

qpython3l_qpython3例子

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01; 在控制台使用计划界面创建使用计划&#xff0c;并将使用计划与已创建的密钥对绑定&#xff08;参考 使用计…

qpython 3h_QPython 3H

qpython 3h一款用于线上编辑来提供的手机软件&#xff0c;能够让你轻松的进行法语内容的快速编辑&#xff0c;用户只需要通过输入之后即可轻松的在软件生成法语&#xff0c;还能够轻松的将文字转化成相对应的法语让你在翻译的时候享受便捷效果&#xff0c;更是还拥有着独特的解…

说一说Qpython3在Android手机上的应用

QPython3是一款可以完美运行于Android平台上的Python3的脚本引擎&#xff0c;QPython3整合了Python3解释器、Console、编辑器和SL4A库。让你在Android设备上也能方便的开发Python项目。 研究Qpython也有一段时间了&#xff0c;一直想记录一些东西以便后面可以回顾&#xff0c;…