技术的乐趣在于分享,欢迎多多交流,多多沟通。
全部博文(877)
分类: C/C++
2014-12-31 11:14:10
最近在学习链表,出现了几个容易混淆的概念,分别是头结点,头指针,首元结点,他们三个到底是什么关系呢?
头结点:
头结点是链表里面第一个结点,他的数据域可以不存放任何信息(有时候也会存放链表的长度等等信息),他的指针区域存放的是链表中第一个数据元素的结点(就是传说中的首元结点)存放的地址。为什么要设头结点呢?第一点,防止防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL;第二点,为了方便对链表的插入、删除的操作,如果有头结点,在插入删除时,无论处理的是否是第一个元素、是否为空表,操作都是一样的。当然,链表可以不带头结点,只是插入删除在实现时麻烦一点。
首元结点:
首元结点就是链表里面第一个元素的结点,也就是a1的结点。在存在头结点的情况下,头结点的指针区域指的就是首元结点。
头指针:
如果链表里有头结点,头指针就指向头结点;如果没有头结点,头指针就指向首元结点。
这三个概念对单链表,双向链表,循环链表均适用。