A.链表允许插入和移除表上任意位置上的节点,同时允许随机存取
B.链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的
C.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成
D.链表的每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域
设哈希表长为14,哈希函数是H(key)=key%11,表中已有数据的关键字为15、38、61、84共4个,现要将关键字为49的结点加到表中,用二次探测再散列法解决冲突,则放入的位置是()。
A.8
B.3
C.5
D.9
输出链表中各结点中的数据域data。struct node { int data;struct
node *next; };
typedef struct node NODE; #define
NULL 0 void main() { NODE *head,*p; p=head;
/*p为工作指针*/ do {
printf("%d/n",
}while();}
71,28,46,14,2,20,85,58)构造哈希表,要求画出哈希表存储结构示意图,并求等概率下查找成功时的平均查找长度。
设有一头指针为L的带有表头结点的非循环双向链表,其每个结点中除有pred(前驱指针)、data(数据)和next(后继指针)域外,还有一个访问频度域freq。在链表被起用前,其值均初始化为零。每当在链表中进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点的最后,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的Locate(L,x)运算的算法,该运算为函数过程,返回找到结点的地址,类型
设有一组关键字为{19,15,23,2,68,20,84,28,55,11,10,80},用链地址法构造哈希表,哈希函数为h(key)=key%13,则哈希地址为2的链表中有______个记录。
A.1
B.2
C.3
D.4
A.INCR(将储存的数字值增一)
B.HINCRBY(为哈希表key中的域field的值加上增量increment)
C.LPUSH(对链表的push操作)
D.以上都是
算法实现的思路为:在有序单链表中插入一个数据元素x,首先要找到该元素应该插入到什么位置,才能保证插入后的单链表仍为有序表。因此,算法的第一步是寻找x的位置:设置指针p、q,最初p指向头结点,q指向头结点的下一个结点,比较q所指数据域的值与x的大小,如果小于x,则p、q分别向后移动一个位置,使p始终作为q的前驱结点,然后重复上面的比较过程;如果比较结果大于x或是比较到最后单链表结束了,则找到了插入位置,在p与q之间插入结点x即可。算法的具体实现如下:
哈希表的地址区间为0~17,哈希函数为h(key)=K9/617。采用线性探测法处理冲突,并将关键字序列{26,25,72,38,8,18,59}依次存储到哈希表中,则存放元素59需要搜索的次数是________。
A.5
B.4
C.3
D.2