作用:
1、防止单链表是空的而设的。当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,头结点的指针域的数值为NULL。
2、是为了方便单链表的特殊 *** 作,插入在表头或者删除第一个结点.这样就保持了单链表 *** 作的统一性!
3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的 *** 作,也减少了程序的复杂性和出现bug的机会 。
4、对单链表的多数 *** 作应明确对哪个结点以及该结点的前驱。
节点的存储位置由指针表示。
扩展资料:
链接存储方法
链接方式存储的线性表简称为链表(Linked List)。
链表的具体存储表示为:
①、 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)
②、 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))。
链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。
参考资料:百度百科-单链表
参考资料:百度百科-头结点
1. 数据的逻辑结构指的是数据元素之间的 。2. .线性结构的基本特征是:若至少含有一个结点,则除起始节点没有直接 前驱 外,其他结点有且仅有一个直接 前驱 ;除终端结点没有直接 后继 外,其他结点有且仅有一个直接后继 。
3. .假设以S和X分别表示入栈和出栈的 *** 作,则对输入序列a,b,c,d,e进行一系列栈 *** 作SSXSXSSXXX后,得到的输出序列为 bceda 。
4. .设S=’I AM A TEACHER’,其长度是 。
5. 若顶点的偶对是有序的,此图为___有向图_____图,有序偶对用________括号括起来;若顶点偶对是无序的,此图为____无向图____图,无序偶对用________括号括起来。
6. 遍历图的基本方法有__深度______优先搜索和 广度________优先搜索两种。
7. 长度为255的表,采用分块查找法,每块的最佳长度是 255/2。
8. 在对一组记录(4,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第七个记录60插入到有序表时,为寻找插入位置需比较1 次。
9 数据的逻辑结构是从逻辑关系上描述数据,它与数据的 具体实现 无关,是独立于计算机的。
10.在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为head= 。
11.栈顶的位置是随着 进栈和出栈 *** 作而变化的。
12.在串S="structure"中,以t为首字符的子串有 12个。
13.已知一棵完全二叉树中共有768结点,则该树中共有 384 个叶子结点。
14.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数2为 。
15.在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动______n-i+1__个元素。
16.在单链表中设置头结点的作用是__使head指向不为空______。
二,选择题
1. 以下说法错误的是( c )
A哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。
B若一个二叉树的树叶是某子树的中序遍历序列中的第一个结点,则它必是该子树的后序遍历序列中的第一个结点。
C已知二叉树的前序遍历和后序遍历序列并不能惟一地确定这棵树,因为不知道树的根结点是哪一个。
D在前序遍历二叉树的序列中,任何结点的子树的所有结点都是直接跟在该结点的之后。
2. 在无向图中,所有顶点的度数之和是所有边数的( c )倍。
A 0.5 B 1 C 2 D 4
3. 设有6个结点的无向图,该图至少应有( A )条边能确保是一个连通图。
A. 5 B. 6 C. 7 D. 8
4. 以下那一个术语与数据的存储结构无关?( B )
A.栈 B. 哈希表 C. 线索树 D. 双向链表
5,顺序查找法适合于存储结构为( B )的线性表。
A. 散列存储 B. 顺序存储或链接存储c. 压缩存储D. 索引存储
6.有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当二分查找值为82的结点时,( B )次比较后的查找成功。
A. 1 B. 2 C. 4 D. 8
7.排序方法中,从未排序序列中挑选元素并将其依次放入已排序序列(初始为空)的一端的方法,称为( B )
A. 希尔排序 B. 归并排序 C 插入排序 D 选择排序
8.算法指的是(D )
A.计算机程序 B.解决问题的计算方法
C.排序算法 D.解决问题的有限运算序列
链表不一定要有头结点,头结点的作用的是为了使处理所有节点的代码相同,否则要为第一个结点单独写代码。头结点的值不一定为空,有时可以用于储存链表长度的数值,为程序提供方便。
头结点的指针域,或没有头结点时的头指针在链表初始化时要设为NULL以指示表空,亦为遍历链表提供跳出条件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)