在单链表中设置头结点的作用是__________。【哈尔滨工业大学2000二、1(1分)】
写出下列语句序列。
①一个无头结点的单链表中,在任意一个结点*p之前插入*s结点时,可执行的操作。
②写出一个无头结点的单链表中,删除任意结点*p时,可执行的操作。
A.链表中的头结点仅起到标识的作用
B.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高
C.链接存储的特点是利用指针来表示数据元素之间的逻辑关系
D.对于双向链表在两个结点之间插入一个新结点需修改的指针共4个,单链表为2个
算法实现的思路为:在有序单链表中插入一个数据元素x,首先要找到该元素应该插入到什么位置,才能保证插入后的单链表仍为有序表。因此,算法的第一步是寻找x的位置:设置指针p、q,最初p指向头结点,q指向头结点的下一个结点,比较q所指数据域的值与x的大小,如果小于x,则p、q分别向后移动一个位置,使p始终作为q的前驱结点,然后重复上面的比较过程;如果比较结果大于x或是比较到最后单链表结束了,则找到了插入位置,在p与q之间插入结点x即可。算法的具体实现如下:
A.不再需要头指针
B.已知某个结点的位置后,能够容易找到它的直接前趋
C.在进行插入、删除运算时,能更好地保证链表不断开
D.从表中任一结点出发都能扫描到整个链表
A.无头结点的单向链表
B.带头结点的单向链表
C.带头结点的双循环链表
D.带头结点的单循环链表
在带有头结点的单链表L中,若要删除第一个结点,则需执行下列三条语句:______;L->next=U->next;free(U);。
A.单链表可以动态增长
B.单链表中插入数据时,不需要移动插入点之后的结点
C.单链表中删除数据时,不需要移动删除结点之后的结点
D.单链表和数组一样,必须事先确定结点的个数
针对带附加头结点的单链表,试编写下列函数。
(1)定位函数Locate:在单链表中寻找第i个结点。若找到,则函数返回第i个结点的地址;若找不到,则函数返回NULL。
(2)求最大值函数max:通过一趟遍历在单链表中确定值最大的结点,
(3)统计函数number:统计单链表中具有给定值x的所有元素,
(4)建立函数create:根据一维数组aLn]建立一个单链表,使单链表中各元素的次序与a[n]中各元素的次序相同,要求该程序的时间复杂度为O(n)。
(5)整理函数tidyup:在非逆减有序的单链表中删除值相同的多余结点。