#L0005. 数据结构汇总——2019~2025 CSP-J初赛
数据结构汇总——2019~2025 CSP-J初赛
- (2019年第6题)链表不具有的特点是()
{{ select(1) }}
- 插入删除不需要移动元素
- 不必事先估计存储空间
- 所需空间与线性表长度成正比
- 可随机访问任一元素
- (2019年第8题)一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标为 ,若某结点的下标为 ,则其左孩子位于下标 处、右孩子位于下标 处),则该数组的最大下标至少为()。

{{ select(2) }}
- 6
- 10
- 15
- 12
- (2019年第14题)假设一棵二叉树的后序遍历序列为 ,中序遍历序列为 ,则其前序遍历序列为()。
{{ select(3) }}
- (2020年第7题)链表不具有的特点是()。
{{ select(4) }}
- 可随机访问任一元素
- 不必事先估计存储空间
- 插入删除不需要移动元素
- 所需空间与线性表长度成正比
- (2020年第8题)有 个顶点的无向图至少应该有( )条边才能确保是一个连通图。
{{ select(5) }}
- 9
- 10
- 11
- 12
- (2020年第11题)下图中所使用的数据结构是( )。

{{ select(6) }}
- 栈
- 队列
- 二叉树
- 哈希表
- (2020年第12题)独根树的高度为 。具有 个结点的完全二叉树的高度为( )。
{{ select(7) }}
- 7
- 8
- 5
- 6
- (2021年第5题)对于入栈顺序为 的序列,下列( )不是合法的出栈序列。
{{ select(8) }}
- (2021年第6题)对于有 个顶点、 条边的无向连通图 ,需要删掉( )条边才能使其成为一棵树。
{{ select(9) }}
- (2021年第8题)如果一棵二叉树只有根结点,那么这棵二叉树高度为 。请问高度为 的完全二叉树有 ( )种不同的形态?
{{ select(10) }}
- 16
- 15
- 17
- 32
- (2021年第9题)表达式 的后缀表达式为( ),其中 和 是运算符。
{{ select(11) }}
- (2021年第11题)在数据压缩编码中的哈夫曼编码方法,在本质上是一种( )的策略。
{{ select(12) }}
- 枚举
- 贪心
- 递归
- 动态规划
- (2021年第14题)以 为起点,对下边的无向图进行深度优先遍历,则 四个点中有可能作为最后一个遍历到的点的个数为( )。

{{ select(13) }}
- 1
- 2
- 3
- 4
- (2022年第2题)有 个元素,按照 的顺序进入栈 ,请问下列哪个出栈序列是非法的( )。
{{ select(14) }}
- (2022年第4题)链表和数组的区别包括( )。
{{ select(15) }}
- 数组不能排序,链表可以
- 链表比数组能存储更多的信息
- 数组大小固定,链表大小可动态调整
- 以上均正确
- (2022年第5题)对假设栈 和队列 的初始状态为空。存在 六个互不相同的数据,每个数据按照进栈 、出栈 、进队列 、出队列 的顺序操作,不同数据间的操作可能会交错。已知栈 中依次有数据 、、、、 和 进栈,队列 依次有数据 、、、、 和 出队列。则栈 的容量至少是( )个数据。
{{ select(16) }}
- (2022年第6题)对表达式
a+(b-c)*d的前缀表达式为( ),其中 +、-、* 是运算符。
{{ select(17) }}
*+a-bcd+a*-bcdabc-d*+abc-+d
- (2022年第7题)假设字母表 在字符串出现的频率分别为 ,,,,。若使用哈夫曼编码方式对字母进行不定长的二进制编码,字母 的编码长度( )位。
{{ select(18) }}
- 或
- (2022年第8题)一棵有 个结点的完全二叉树用数组进行存储与表示,已知根结点存储在数组的第 个位置。若存储在数组第 个位置的结点存在兄弟结点和两个子结点,则它的兄弟结点和右子结点的位置分别是( )。
{{ select(19) }}
- 、
- 、
- 、
- 、
- (2022年第9题)考虑由 个顶点构成的有向连通图,采用邻接矩阵的数据结构表示时,该矩阵中至少存在( )个非零元素。
{{ select(20) }}
- (2022年第10题)以下对数据结构的表述不恰当的一项为:( )。
{{ select(21) }}
- 图的深度优先遍历算法常使用的数据结构为栈。
- 栈的访问原则后进先出,队列的访问原则是先进先出。
- 队列常常被用于广度优先搜索算法。
- 栈与队列存在本质不同,无法用栈实现队列。
- (2022年第11题)以下哪组操作能完成在双向循环链表结点 之后插入结点 的效果(其中,
next域为结点的直接后继,prev域为结点的直接前驱):( )。
{{ select(22) }}
p->next->prev=s; s->prev=p; p->next=s; s->next=p->next;p->next->prev=s; p->next=s; s->prev=p; s->next=p->next;s->prev=p; s->next=p->next; p->next=s; p->next->prev=s;s->next=p->next; p->next->prev=s; s->prev=p; p->next=s;
- (2023年第4题)假设有一个链表的节点定义如下:
struct Node { int data; Node* next; }
现在有一个指向链表头部的指针:Node* head。如果想要在链表中插入一个新节点,其成员 data 的值为 ,并使新节点成为链表的第一个节点,下面哪个操作是正确的?
{{ select(23) }}
Node* newNode = new Node; newNode->data = 42; newNode->next = head; head = newNode;Node* newNode = new Node; head->data = 42; newNode->next = head; head = newNode;Node* newNode = new Node; newNode->data = 42; head->next = newNode;Node* newNode = new Node; newNode->data = 42; newNode->next = head;
- (2023年第5题)根节点的高度为 ,一棵拥有 个节点的三叉树高度至少为()。
{{ select(24) }}
- 6
- 7
- 8
- 9
- (2023年第8题)后缀表达式
6 2 3 + - 3 8 2 / + * 2 ^ 3 +对应的中缀表达式是
{{ select(25) }}
- ((6-(2+3))*(3+8/2))^2+3
- 6-2+3*3+8/2^2+3
- (6-(2+3))*((3+8/2)^2)+3
- 6-((2+3)*(3+8/2))^2+3
- (2023年第10题)假设有一组字符
{a,b,c,d,e,f}, 对应的频率分别为 。请问以下哪个选项是字符abcdef分别对应的一组哈夫曼编码?
{{ select(26) }}
1111,1110,101,100,110,01010,1001,1000,011,010,00000,001,010,011,10,111010,1011,110,111,00,01
- (2023年第11题)给定一棵二叉树,其前序遍历结果为:
ABDECFG,中序遍历结果为:DEBACFG。请问这棵树的正确后序遍历结果是什么?
{{ select(27) }}
EDBGFCAEDGBFCADEBGFCADBEGFCA
- (2023年第12题)考虑一个有向无环图,该图包含 条有向边: 和 。以下哪个选项是这个有向无环图的一个有效的拓扑排序?
{{ select(28) }}
- 4,2,3,1
- 1,2,3,4
- 1,2,4,3
- 2,1,3,4
- (2024年第11题)在无向图中,所有顶点的度数之和等于( )。
{{ select(29) }}
- 图的边数
- 图的边数的两倍
- 图的顶点数
- 图的顶点数的两倍
- (2024年第12题)已知二叉树的前序遍历为 ,中序遍历为 ,请问该二叉树的后序遍历结果是?( )
{{ select(30) }}
- (2024年第13题)给定一个空栈,支持入栈和出栈操作。若入栈操作的元素依次是 ,其中 最先入栈, 最后入栈,下面哪种出栈顺序是不可能的?( )
{{ select(31) }}
- 6 5 4 3 2 1
- 1 6 5 4 3 2
- 2 4 6 5 3 1
- 1 3 5 2 4 6
- (2025年第4题)用 个权值 构造哈夫曼树,该树的带权路径长度是多少?
{{ select(32) }}
- (2025年第5题)在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和,这个总和等于?
{{ select(33) }}
- 顶点数
- 边数
- 顶点数 + 边数
- 顶点数
- (2025年第14题)一棵包含 个结点的完全二叉树,其叶子结点的数量是多少?
{{ select(34) }}
- (2025年第15题)给定一个初始为空的整数栈 和一个空的队列 。我们按顺序处理输入的整数队列 。对于队列 中的每一个数,执行以下规则:如果该数是奇数,则将其压入栈 ;如果该数是偶数,且栈 非空,则弹出一个栈顶元素,并加入到队列 的末尾;如果该数是偶数,且栈 为空,则不进行任何操作。当队列 中的所有数都处理完毕后,队列 的内容是什么?
{{ select(35) }}