网站模板上传打不开,中国建设网app下载,福田区住房和建设局网站,erp系统免费版目录
一、选择题
二、编程题
三、选择题题解
四、编程题题解 一、选择题
1、在有序双向链表中定位删除一个元素的平均时间复杂度为 A. O(1) B. O(N) C. O(logN) D. O(N*logN) 2、在一个以 h 为头指针的单循环链表中#xff0c;p 指针指向链尾结点的条件是( ) A. p-ne…目录
一、选择题
二、编程题
三、选择题题解
四、编程题题解 一、选择题
1、在有序双向链表中定位删除一个元素的平均时间复杂度为 A. O(1) B. O(N) C. O(logN) D. O(N*logN) 2、在一个以 h 为头指针的单循环链表中p 指针指向链尾结点的条件是( ) A. p-nextNULL B. p-nexth C. p-next-nexth D. p-data-1 3、在双向链表中指针p的结点前插入一个指针q的结点操作是() A. p-Llinkq;q-Rlinkp;p-Llink-Rlinkq;q-Llinkq; B. p-Llinkq;p-Llink-Rlinkq;q-Rlinkp;q-Llinkp-Llink; C. q-Rlinkp;q-Llinkp-Llink;p-Llink-Rlinkq;p-Llinkq; D. q-Llinkp-Llink;q-Rlinkq;p-Llinkq;p-Llinkq; 4、若用数组S[0…n]作为两个栈S1和S2的存储结构对任何一个栈只有当S全满时才不能做入栈操作。为这两个栈分配空间的最佳方案是 A. S1的栈底位置为0S2的栈底位置为n B. S1的栈底位置为0S2的栈底位置为n/2 C. S1的栈底位置为1S2的栈底位置为n/2 5、循环队列的存储空间为 Q(1:200) 初始状态为 frontrear200 。经过一系列正常的入队与退队操作后 frontrear1 则循环队列中的元素个数为 A. 0或200 B. 1 C. 2 D. 199 6、将一棵二叉树的根结点放入队列然后递归的执行如下操作将出队结点所有子结点加入队。以上操作可以实现哪种遍历 A. 前序遍历 B. 中序遍历 C. 后序遍历 D. 层序遍历 7、已知数据元素为(34,76,45,18,26,54,92,65),按照依次插入节点的方法生成一棵二叉排序树则该树的深度为() A. 7 B. 6 C. 4 D. 5 8、有 1000 个无序的整数希望使用最快的方式找出前 50 个最大的最佳的选择是 A. 冒泡排序 B. 基数排序 C. 堆排序 D. 快速排序 9、已知一个线性表382574635248假定采用散列函数hkey) key%7 计算散列地址并散列存储在散列表A[0....6]中若采用线性探测方法解决冲突则 在该散列表上进行等概率成功查找的平均查找长度为 A. 1.5 B. 1.7 C. 2.0 D. 2.3 10、下面的排序方法中关键字比较次数与记录的初始排列无关的是______。 A. 希尔排序 B. 冒泡排序 C. 直接插入排序 D. 直接选择排序 二、编程题
1、小易升级之路 题目链接 2、找出字符串中第一个只出现一次的字符 题目链接 三、选择题题解
1、在有序双向链表中定位删除一个元素的平均时间复杂度为 A. O(1) B. O(N) C. O(logN) D. O(N*logN) 正确答案B 题解 我们要是想在双向链表中删除一个元素我们就必须知道删除结点的位置因此需要遍历链表时间复杂度为ON
2、在一个以 h 为头指针的单循环链表中p 指针指向链尾结点的条件是( ) A. p-nextNULL B. p-nexth C. p-next-nexth D. p-data-1 正确答案B 题解 既然是循环链表首尾必然相连最后一个结点的下一个结点必然是头节点故选B
3、在双向链表中指针p的结点前插入一个指针q的结点操作是() A. p-Llinkq;q-Rlinkp;p-Llink-Rlinkq;q-Llinkq; B. p-Llinkq;p-Llink-Rlinkq;q-Rlinkp;q-Llinkp-Llink; C. q-Rlinkp;q-Llinkp-Llink;p-Llink-Rlinkq;p-Llinkq; D. q-Llinkp-Llink;q-Rlinkq;p-Llinkq;p-Llinkq; 正确答案C 题解 对于此题如若不清楚建议采用画图的方式更加清晰明了如下图所示 4、若用数组S[0…n]作为两个栈S1和S2的存储结构对任何一个栈只有当S全满时才不能做入栈操作。为这两个栈分配空间的最佳方案是 A. S1的栈底位置为0S2的栈底位置为n B. S1的栈底位置为0S2的栈底位置为n/2 C. S1的栈底位置为1S2的栈底位置为n/2 正确答案A 题解 若想做到任意一个栈满都另一个栈都无法插入必须使得他们的入栈增长方向不同若一个向上增长一个向下增加此时他们任意一个满了另一个都无法插入
5、循环队列的存储空间为 Q(1:200) 初始状态为 frontrear200 。经过一系列正常的入队与退队操作后 frontrear1 则循环队列中的元素个数为 A. 0或200 B. 1 C. 2 D. 199 正确答案A 题解 此题循环队列并没有考虑少用一个空间区分空状态和满状态因此此题选A
6、将一棵二叉树的根结点放入队列然后递归的执行如下操作将出队结点所有子结点加入队。以上操作可以实现哪种遍历 A. 前序遍历 B. 中序遍历 C. 后序遍历 D. 层序遍历 正确答案D 题解 妥妥的层序遍历若不清楚建议自己实现一次层序遍历
7、已知数据元素为(34,76,45,18,26,54,92,65),按照依次插入节点的方法生成一棵二叉排序树则该树的深度为() A. 7 B. 6 C. 4 D. 5 正确答案D 题解 注意此题是二叉排序树不是平衡二叉排序树我们依次插入可以得到下图 8、有 1000 个无序的整数希望使用最快的方式找出前 50 个最大的最佳的选择是 A. 冒泡排序 B. 基数排序 C. 堆排序 D. 快速排序 正确答案C 题解 经典TopK问题选择堆排序
9、已知一个线性表382574635248假定采用散列函数hkey) key%7 计算散列地址并散列存储在散列表A[0....6]中若采用线性探测方法解决冲突则 在该散列表上进行等概率成功查找的平均查找长度为 A. 1.5 B. 1.7 C. 2.0 D. 2.3 正确答案C 题解 我们画出散列表分布并计算每个数据查找次数最后便可求出平均查找次数如下图所示 10、下面的排序方法中关键字比较次数与记录的初始排列无关的是______。 A. 希尔排序 B. 冒泡排序 C. 直接插入排序 D. 直接选择排序 正确答案D 题解 直接插入排序的思想是每次都找出范围内最小值或最大值然后放入相应位置与数列中原本顺序无关
四、编程题题解
1、小易升级之路 思路模拟题若怪兽战力比小易低我们直接加上该怪兽的战力若怪兽战力比小易高我们求出两者的最大公约数然后加上该公约数 #include iostream
#include vector
using namespace std;int get_divi(int a, int b)
{int c a % b;while(c){a b;b c;c a % b;}return b;
}int main()
{int n, a;while(cin n a){vectorint v(n, 0);for(int i 0; i n; i){cin v[i];}for(auto e : v){if(e a){a e;}else {a get_divi(a, e);}}cout a endl;}return 0;
}
2、找出字符串中第一个只出现一次的字符 思路我们采用计数排序的思想开一个256大小的整型数组将字符串中的每一个字符都一 一映射到数组中每一个位置每次遇到字符串的字符相应位置最后遍历字符串找出第一个只出现一次的字符 #include iostream
#include string
using namespace std;int main()
{int count[256] { 0 };string str;cin str;for(auto ch : str){count[ch];}// 遍历原字符串int i 0;while(i str.size()){if(count[str[i]] 1){cout str[i] endl;break;}i;}if(i str.size())cout -1 endl;return 0;
}