m阶B一树是一棵( )。
基于比较方法的n个数据的内部排序,最坏情况下的时间复杂度能达到的最好下界是( )。
某个待排序的序列是一个可变长度的字符串序列,这些字符串一个接一个地存储于唯一的字符数组中。请改写快速排序算法,对这个字符串序列进行排序。
写一个建立堆的算法:从空堆开始,依次读入元素,调用上题中堆插入算法将其插入堆中。
二叉排序树采用二叉链表存储。写一个算法,删除结点值是X的结点。要求删除该结点后,此树仍然是一棵二叉排序树,并且高度没有增长(注意:可不考虑被删除的结点是根的情况)。
下面函数的功能是实现分块查找,空白处应该添加的内容是( )。 int BlkSearch(int*nz,mt key,int block,int BLK,int len) { int i; block=block-1; if(len<=0) { puts(”表为空!.”): return 0: } if(BLKd>len)BLK=len; for(i=block*BLK;i<(block+1)*BLK&&nz[i]!=0;i++) { if( ) { printf(”找到第%d个数是%d\n”,i,key); return 0: } }printf(”\n”); printf(”查找结束\n”); return 0; }
对一个由n个关键字不同的记录构成的序列,能否用比2n一3少的次数选出该序列中关键字取最大值和关键字取最小值的记录?请说明如何实现?在最坏的情况下至少要进行多少次比较?
当采用分块查找时,数据的组织方式为( )。
设从键盘输入一个整数的序列:n,a
1
,a
2
,…,a
n
,其中n表示连续输入整数的个数。
下列( )是一个堆。
有n个顶点e条边的无向图,采用邻接表存储时,有( )个表头结点,有( )个链表结点。
试设计一算法,使得在尽可能少的时间内重排数组,将所有取负值的关键字放在所有取非负值的关键字之前,并分析算法的时间复杂度。
冒泡排序方法是把大的元素向上移(气泡的上浮),也可以把小的元素向下移(气泡的下沉)。请给出上浮和下沉过程交替的冒泡排序算法。
在用除余法作为散列函数线性探测解决冲突的散列表中,写一删除关键字的算法,要求将所有可以前移的元素前移去填充被删除的空位,以保证探测序列不至于断裂。
有()棵不同的二叉树,其结点的前序序列为a1,a2,…,an。
为了增加内存空间的利用率和减少溢出的可能性,两个栈可以共享一片连续的内存空间,此时应将两栈的栈底分别设在( )。
已知深度为h的二叉树采用顺序存储结构已存放于数组BT[1..2
h
一1]中,请写一非递归算法,产生该二叉树的二叉链表结构。设二叉链表中链结点的构造为(lchild,data,rchild),根结点所在链结点的指针由T给出。
B综合应用题41-47小题。/B
假设K
1
,…,K
n
是n个关键词,试解答:
(1)试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为K
1
,K
2
,…,K
n
时,用算法建立一棵以LLINK—RIJNK链接表示的二叉查找树。
(2)设计一个算法,打印出该二叉查找树的嵌套括号表示结构。假定该二叉查找树的嵌套括号表示结构为B(A,D(C,E))。
判断线索二叉树中某结点*p有左孩子的条件是( )。
