选择题 共15道
判断题 共10道
编程题 共2道
链表不具备的特点是( )。
双向链表中每个结点有两个指针域 prev 和 next ,分别指向该结点的前驱及后继结点。设 p 指向链表中的一个结点,它的前驱结点和后继结点均非空。要删除结点 p ,则下述语句中错误的是( )。
假设双向循环链表包含头尾哨兵结点(不存储实际内容),分别为 head 和 tail ,链表中每个结点有两个指针域 prev 和 next ,分别指向该结点的前驱及后继结点。下面代码实现了一个空的双向循环链表,横线上应填的最佳代码是( )。
用以下辗转相除法(欧几里得算法)求gcd(84, 60)的步骤中,第二步计算的数是( )。
根据唯一分解定理,下面整数的唯一分解是正确的( )。
下述代码实现素数表的线性筛法,筛选出所有小于等于 的素数,横线上应填的最佳代码是( )。
在程序运行过程中,如果递归调用的层数过多,会因为( )引发错误。
对下面两个函数,说法错误的是( )。
下算法中,( )是不稳定的排序
考虑以下C++代码实现的快速排序算法,将数据从小到大排序,则横线上应填的最佳代码是( )。
若用二分法在[1, 100]内猜数,最多需要猜( )次。
下面代码实现了二分查找算法,在数组 arr 找到目标元素 target 的位置,则横线上能填写的最佳代码是( )。
贪心算法的核心特征是( )
函数 int findMax(int arr[], int low, int high) 计算数组中最大元素,其中数组 arr 从索引low 到 high ,( )正确实现了分治逻辑
小杨编写了一个如下的高精度乘法函数,则横线上应填写的代码为( )。
单链表中删除某个结点 p (非尾结点),但不知道头结点,可行的操作是将 p 的值设为 p->next 的值,然后删除 p->next 。
链表存储线性表时要求内存中可用存储单元地址是连续的
线性筛相对于埃拉托斯特尼筛法,每个合数只会被它的最小质因数筛去一次,因此效率更高
贪心算法通过每一步选择当前最优解,从而一定能获得全局最优解
递归函数必须具有一个终止条件,以防止无限递归
快速排序算法的时间复杂度与输入是否有序无关,始终稳定为
归并排序算法的时间复杂度与输入是否有序无关,始终稳定为
二分查找适用于对无序数组和有序数组的查找。
小杨有100元去超市买东西,每个商品有各自的价格,每种商品只能买1个,小杨的目标是买到最多数量的商品。小杨采用的策略是每次挑价格最低的商品买,这体现了分治思想。
归并排序算法体现了分治算法,每次将大的待排序数组分成大小大致相等的两个小数组,然后分别对两个小数组进行排序,最后对排好序的两个小数组合并成有序数组。