C/C++笔试易错与高频题型&图解知识点(三)——数据结构部分(持续更新中)

目录

[1. 排序](#1. 排序)

[1.1 冒泡排序的改进](#1.1 冒泡排序的改进)

[2. 二叉树](#2. 二叉树)

[2.1 二叉树的性质](#2.1 二叉树的性质)

[3. 栈 & 队列](#3. 栈 & 队列)

[3.1 循环队列](#3.1 循环队列)

[3.2 链式队列](#3.2 链式队列)

[4. 平衡二叉搜索树------AVL树、红黑树](#4. 平衡二叉搜索树——AVL树、红黑树)

[5 优先级队列(堆)](#5 优先级队列(堆))

1. 排序

1.1 冒泡排序的改进

下面的排序方法中,关键字比较次数与记录的初始排列无关的是______。

A. 希尔排序

B. 冒泡排序

C. 直接插入排序

D. 直接选择排序

答案:D

基础的冒泡排序是与初始排列无关的,但是改进的冒泡排序,当一趟排序之后没有交换,则说明序列已经有序,则可退出排序,例如一个已经排好序的序列,第一次循环之后就可以退出排序了;

所以说对比B选项和D选项,D选项肯定时最优解

2. 二叉树

2.1 二叉树的性质

① 对于任意一颗二叉树,设叶子节点个数为n0,度为二的节点的个数为n2,则满足n0 = n2 + 1

某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为() A. 不存在这样的二叉树

B. 200

C. 198(错误)

D. 199

答案:B

②深度和高度

根节点的深度为0

3. 队列

3.1 循环队列

现有一循环队列,其队头指针为front,队尾指针为rear;循环队列长度为N。其队内有效长度为()("左闭右开")

A. (rear - front + N) % N + 1(错误)

B. (rear - front + N) % N

C. (rear - front) % (N + 1)

D. (rear - front + N) % (N - 1)

答案:B

3.2 链式队列

用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()

A. 仅修改队头指针(错误)

B. 仅修改队尾指针

C. 队头、队尾指针都可能要修改

D. 队头、队尾指针都要修改

答案:C

※当队列只有一个节点时,出队列对头队尾指针均需要修改、

4. 栈

4.1 运算表达式

表达式3*2^(4+2*2-6*3)-5求值过程中当扫描到6时,对象栈和运算符栈为(),其中^为乘幂

A. 3,2,4,1,1;(*^(+*-

B. 3,2,8;(*^-(错误)

C. 3,2,4,2,2;(*^(-

D. 3,2,8;*^(-

答案:D

数据栈:有数据就直接入栈

运算符栈 :设遍历到当前的运算符位x ,如果栈不为空,比较栈顶与当前运算符优先级x,当栈顶运算符优先级大于或者等于x的优先级,则出栈,并将两个数据栈的数据出栈,计算出对应的数据,加入到数据栈中

5. 平衡二叉搜索树------AVL树、红黑树

若将关键字1,2,3,4,5,6,7 依次插入到初始为空的平衡二叉树 T 中,则 T 中平衡因子为 0 的分支结点的个数是( )

A. 0

B. 1

C. 2

D.3

答案:D (分支节点:不包含叶子节点)

6. 优先级队列(堆)

下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()

A. 二叉排序树(错误)

B. 哈夫曼树

C. AVL树

D. 堆

答案:D

知识点:小根堆与大根堆(详细看数据结构一、1.2节)

7. 哈希表

采用哈希表组织100万条记录,以支持字段A快速查找,则()

A. 理论上可以在常数时间内找到特定记录(错误:发生哈希冲突)

B. 所有记录必须存在内存中

C. 拉链式哈希曼最坏查找时间复杂度是O(n)

D. 哈希函数的选择跟A无关

答案:C

相关推荐
吴声子夜歌8 分钟前
数据结构——通用树(N叉树)
数据结构
surtr126 分钟前
常见排序模板(冒泡排序,希尔排序,堆排序,归并排序,快速排序)
数据结构·算法·贪心算法·排序算法
水饺编程1 小时前
Visual Studio 软件操作:添加附加依赖项
c语言·c++·windows·visual studio
-To be number.wan1 小时前
C++ 进阶技巧:如何让 cout << 自定义对象 正常输出?
开发语言·c++
一路往蓝-Anbo1 小时前
C语言从句柄到对象 (三) —— 抛弃 Malloc:静态对象池与索引句柄的终极形态
c语言·开发语言·数据结构·stm32·单片机·算法
序属秋秋秋1 小时前
《Linux系统编程之进程控制》【进程创建 + 进程终止】
linux·c语言·c++·操作系统·进程·进程创建·进程终止
集芯微电科技有限公司2 小时前
PC1001超高频率(50HMZ)单通单低侧GaN FET驱动器支持正负相位配置
数据结构·人工智能·单片机·嵌入式硬件·神经网络·生成对抗网络·fpga开发
一路往蓝-Anbo2 小时前
C语言从句柄到对象 (二) —— 极致的封装:不透明指针与 SDK 级设计
c语言·开发语言·数据结构·stm32·单片机·嵌入式硬件
上天_去_做颗惺星 EVE_BLUE2 小时前
C++学习:学生成绩管理系统
c语言·开发语言·数据结构·c++·学习
John_ToDebug2 小时前
Chromium WebUI 定制实践:从 C++ 注入到 JS 安全展示全链路解析
javascript·c++·chrome