有6个元素按6,5,4,3,2,1的顺序依次进栈,不合法的出栈序列是( )。
有关二叉树下列说法正确的是( )。
对于n个元素组成的线性表进行快速排序时,所需进行的比较次数与这n个元素的初始排序有关。问: (1)当n=7时,在最好情况下需进行多少次比较?请说明理由。 (2)当n=7时,给出一个最好情况的初始排序的实例。 (3)当n=7时,在最坏情况下需进行多少次比较?请说明理由。 (4)当n=7时,给出一个最坏情况的初始排序的实例。
如下图所示,在下面的5个序列中,符合深度优先遍历的序列有()个。①aebfdc②acfdeb③aedfcb④aefdbc⑤aecfdb
在下面关于树的相关概念的叙述中,正确的是( )。
若对有18个元素的有序表做二分查找,则查找A[3]的比较序列的下标为( )。
有一种简单的排序算法,叫做计数排序(Count sorting)。这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键字比该记录的关键字小。假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为c。 设计实现计数排序的算法。对于有n个记录的表,关键字的比较次数是多少?与简单选择排序相比较,这种方法是否更好?为什么?
线性表中存放的主要是( )。
判断线索二叉树中某结点*p有左孩子的条件是( )。
把树的根结点的层数定义为1,其他结点的层数等于其父结点所在层数加上I。设T是一棵二叉树,K
i
和K
j
是T中子结点数小于2的结点中的任意两个,它们所在的层数分别为λK
i
和λK
j
,当关系式|λK
i
一λK
j
|≤1一定成立时,则称T为一棵( )。
已知顺序表A,在不改变顺序表中奇数号元素与偶数号元素相对位置的前提下,设计算法,将所有奇数号元素移到所有偶数号元素前。
如果以单链表表示集合,设集合A用单链表LA表示,集合B用单链表LB表示,设计算法求两个集合的差,即A一B。
已知二叉树排序树中某结点指针p,其双亲结点指针为fp,p为fp的左孩子。试编写算法,删除p所指结点。
执行完下列语句段后,i值为( )。 int f(int x){ return((x>0)?x*f(x—1):2); } i=f(f(1));
设计一个算法,判断一个算术表达式中的括号是否配对。算术表达式保存在带头结点的单循环链表中,每个结点有两个域:ch和link,其中ch域为字符类型。
设有一个n×n的上三角矩阵(a
ij
),将其上三角中的元素按先行后列的顺序存于数组B[m]中,使得B[k]=a
ij
且k=f
1
(i)f
2
(j)+c,请推导出函数f
1
、f
2
和常数c,要求f
1
和f
2
中不含常数项。
顺序查找法适用于查找顺序存储或链式存储的线性表二分法查找只适用于查找顺序存储的有序表,平均比较次数为( )。在此假定N为线性表中结点数,且每次查拔都是成功的。
设有一个数组中存放了一个无序的关键字序列K
1
,K
2
,…,K
n
。现要求将K
n
放在将元素排序后的正确位置上,试编写实现该功能的算法,要求比较关键字的次数不超过n。
已知非空链表A,其指针是list,链表中的结点由两部分组成:数据域data和指针域link。设计一个算法,将链表中数据域值最小的那个链结点移到链表的最前面,在不额外申请新的链结点的情况下,使得算法时间复杂度和空间复杂度尽可能低。要求:
输入N个只含一位数字的整数,试用基数排序的方法,对这N个数排序。
