(完整版)数据结构C++版试题
数据结构c语言期末考试题及答案

数据结构c语言期末考试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,线性结构和非线性结构的区别在于()。
A. 结构中元素的个数B. 结构中是否包含子结构C. 结构中元素之间是否有一对一关系D. 结构中元素之间是否有一对多关系答案:C2. 线性表的顺序存储结构和链式存储结构相比,其优点是()。
A. 存储密度高B. 存储密度低C. 插入和删除操作快D. 存储空间可以动态分配答案:A3. 在一个长度为n的顺序表中,删除第i个元素(1≤i≤n)时,需要移动的元素个数为()。
A. i-1B. n-iC. n-i+1D. n-i-1答案:B4. 栈的运算遵循()原则。
A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:C5. 在二叉树的前序遍历中,访问顺序为()。
A. 根-左-右B. 左-根-右C. 左-右-根D. 右-左-根答案:A6. 哈希表的冲突解决方法中,链地址法是()。
A. 将所有元素存储在同一个存储单元B. 将所有元素存储在同一个链表中C. 将所有元素存储在同一个数组中D. 将所有元素存储在同一个链表的同一个位置答案:B7. 在图的遍历中,深度优先搜索(DFS)和广度优先搜索(BFS)的主要区别在于()。
A. 遍历的顺序不同B. 遍历的起点不同C. 遍历的路径不同D. 遍历使用的存储结构不同答案:D8. 快速排序算法的时间复杂度为()。
A. O(n)B. O(nlogn)C. O(n^2)D. O(logn)答案:B9. 归并排序算法的时间复杂度为()。
A. O(n)B. O(nlogn)C. O(n^2)D. O(logn)答案:B10. 在二叉搜索树中,查找一个元素的时间复杂度为()。
A. O(n)B. O(logn)C. O(n^2)D. O(1)答案:B二、填空题(每题2分,共20分)1. 在数据结构中,一个算法的时间复杂度通常用______来描述。
答案:大O符号2. 线性表的两种基本操作是插入和______。
(完整版),数据结构c语言版试题大全(含答案),推荐文档

B
16C
18、逻辑结构|顺序存储结构|链式存储结构|以上都对
B
17B
19、每个结点用占一片连续的存储区域|所有结点占用一片连续的存储区域|结点的最后一个数据域是 18B
指针类型|每个结点有多少个后继,就设多少个指针域
A
19A
20、效率与采用何种存储结构有关|是根据存储结构来定义的|有算术运算和关系运算两大类|必须用 20A
31、一个有限序列,可以为空|一个有限序列,不可以为空|一个无限序列,可以为空|一个无限序列, 37A
不可以为空
A
38B
32、必须是连续的|一定是不连续的|部分地址必须是连续的|连续与否均可以
D
39B
33、可随机访问任一结点|插入删除不需要移动元素|不必事先估计存储空间|所需空间与其长度成正 40D
-3-
35、设线性表有 n 个元素,以下操作中,_______在顺序表上实现比在链表上实现效率更高。 输出第 i(1<=i<=n)个元素值|交换第 1 个元素与第 2 个元素的值|顺序输出这 n 个元素的值|输出与给定值 x 相等的元素在线性表中的序号 36、对于一个线性表,既要求能够较快地进行插入和删除,又要求存储结构能够反映数据元素之间的逻辑 关系,则应采用_______存储结构。 顺序|链式|散列|索引 37、设线性表中有 2n 个元素,以下操作中,______在单链表上实现要比在顺序表上实现效率更高。 删除指定的元素|在最后一个元素的后面插入一个新元素|顺序输出前 k 个元素|交换第 i 个元素和第 2n-i-1 个元素的值(i=0,1,…,n-1) 38、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是______。 单链表|静态链表|线性链表|顺序存储结构 39、如果最常用其所长的操作是取第 i 个结点及其前驱,则采用______结构方式最节省时间。 单链表|双链表|单循环链表|顺序表 40、与单链表相比,双链表的优点之一是______。 插入、删除操作更简单|可以进行随机访问|可以省略表头指针或表尾指针|访问前后相邻结点更灵活 41、数据结构在计算机内存中的表示是指______. 数据的存储结构|数据结构|数据的逻辑结构|数据元素之间的关系 42、下面程序段的时间复杂度为_________. O(m)| O(n)|O(m*n)|O(m+n)
c语言版数据结构试题及答案

c语言版数据结构试题及答案在学习数据结构的过程中,掌握相关的试题及答案是非常重要的。
本文将为你提供一份C语言版的数据结构试题及答案,帮助你更好地掌握这门学科。
以下是一些常见的数据结构试题及详细的答案解析。
一、单项选择题1. 下列哪个不是数据结构中的逻辑数据结构?A. 栈B. 数组C. 队列D. 链表答案:B解析:数组是一种物理数据结构,用于存储一组相同类型的元素,而不是逻辑上的数据结构。
逻辑上的数据结构指的是在操作时需要考虑元素之间的逻辑关系,如栈、队列和链表。
2. 下列关于栈的叙述中,错误的是:A. 栈是一种后进先出(LIFO)的数据结构B. 栈的插入操作称为入栈C. 栈可以通过数组或链表来实现D. 栈的删除操作称为弹栈或出栈答案:C解析:栈可以通过数组或链表来实现,因此选项C是正确的。
二、填空题1. 将下列序列按照栈的顺序进行入栈,并给出每一步的栈的状态:5, 3, 8, 4, 2答案:- 入栈5,栈的状态:5- 入栈3,栈的状态:5, 3- 入栈8,栈的状态:5, 3, 8- 入栈4,栈的状态:5, 3, 8, 4- 入栈2,栈的状态:5, 3, 8, 4, 2三、简答题1. 请简要解释树的遍历算法中的前序遍历、中序遍历和后序遍历分别是如何进行的?答案:- 前序遍历:先访问当前节点,然后递归地遍历左子树,最后递归地遍历右子树。
- 中序遍历:先递归地遍历左子树,然后访问当前节点,最后递归地遍历右子树。
- 后序遍历:先递归地遍历左子树,然后递归地遍历右子树,最后访问当前节点。
四、编程题1. 请编写一个C语言函数,用于计算给定二叉树的节点个数。
答案:```c#include <stdio.h>struct TreeNode {int value;struct TreeNode* left;struct TreeNode* right;};int countNodes(struct TreeNode* root) {if (root == NULL) {return 0;}else {return 1 + countNodes(root->left) + countNodes(root->right);}}int main() {// 构建二叉树struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));struct TreeNode* node1 = (struct TreeNode*)malloc(sizeof(struct TreeNode));struct TreeNode* node2 = (struct TreeNode*)malloc(sizeof(struct TreeNode));root->value = 1;node1->value = 2;node2->value = 3;root->left = node1;root->right = node2;node1->left = NULL;node1->right = NULL;node2->left = NULL;node2->right = NULL;int nodeCount = countNodes(root);printf("节点个数为:%d\n", nodeCount);return 0;}```解析:上述代码中,通过递归的方式计算二叉树的节点个数。
数据结构(C语言版)1800道题及答案[完整版]
![数据结构(C语言版)1800道题及答案[完整版]](https://img.taocdn.com/s3/m/9bcf54fe59f5f61fb7360b4c2e3f5727a5e9240e.png)
数据结构(C语言版)1800道题及答案[完整版]数据结构(C语言版)1800道题及答案[完整版]数据结构1800例题与答案第一章绪论一、选择题(每小题2分)1.算法的计算量的大小称为计算的(B )。
【北京邮电大学2000 二、3 (20/8分)】A.效率 B.复杂性 C.现实性 D.难度2.算法的时间复杂度取决于(C)。
【中科院计算所 1998 二、1 (2分)】A.问题的规模 B.待处理数据的初态 C.A和B D.都不是3.计算机算法指的是(① C ),它必须具备(② B )这三个特性。
① A.计算方法B.排序方法C.解决问题的步骤序列 D.调度方法② A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性 D.易读性、稳定性、安全性【南京理工大学1999 一、1(2分)【武汉交通科技大学1996 一、1(4分)】4.一个算法应该是( B )。
【中山大学 1998 二、1(2分)】A.程序 B.问题求解步骤的描述C.要满足五个基本特性 D.A和C.5.下面关于算法说法错误的是( D )【南京理工大学 2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是(C )【南京理工大学2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为( C )两大类。
【武汉交通科技大学 1996 一、4(2分)】A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是(D )。
数据结构c语言版试题大全(含答案)

数据结构c语言版试题大全(含答案)数据结构C语言版试题大全(含答案)第一章:基本概念与算法设计1.1 数据结构的定义与特点数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,它包括了数据的存储、组织和管理方式。
数据结构的特点包括以下几个方面:- 数据元素之间存在某种关系,构成逻辑结构- 对数据元素的操作对应于对其逻辑结构的操作- 数据结构有存储结构,包括顺序存储结构和链式存储结构- 算法是对数据结构的操作步骤的描述和实现1.2 算法的基本概念算法是解决特定问题或完成特定任务的一系列操作步骤。
算法的基本概念包括以下几个方面:- 有穷性:算法必须能在有限步骤内完成- 确定性:算法的每一步骤必须有确定的含义和结果- 可行性:算法的每一步骤必须可行,能够通过执行有限次数实现- 输入:算法接受的输入数据是原始问题的实例- 输出:算法产生的输出数据与输入有明确的关系1.3 算法的描述方法算法可以用自然语言、伪代码或流程图来描述。
常用的伪代码描述方法包括结构化语言和算法描述语言,结构化语言包括顺序结构、分支结构和循环结构。
第二章:线性结构2.1 线性表的定义与基本操作线性表是n个数据元素的有限序列,其中相邻元素之间存在唯一的前驱和后继关系。
线性表的基本操作包括插入、删除、查找和修改等。
2.2 数组与广义表数组是指具有相同数据类型的一组数据元素的集合,可以通过下标访问元素。
广义表是线性表的推广,其中元素可以是基本数据类型或另一个广义表。
第三章:树与二叉树3.1 树的定义与基本术语树是n(n≥0)个结点的一个有限集合,其中满足以下条件:- 有且仅有一个特定的称为根的结点- 其余结点可分为m(m≥0)个互不相交的有限集合,每个集合本身又是一棵树3.2 二叉树的定义与性质二叉树是指每个结点最多有两个子结点的树结构。
二叉树的性质包括以下几个方面:- 深度为k的二叉树最多有2^k-1个结点- 一棵二叉树的第i层最多有2^(i-1)个结点- 在二叉树的第i层上至多有2^(n-i+1)-1个结点(n为树的深度)第四章:图4.1 图的基本概念与术语图是由顶点的有穷非空集合和边的有穷集合组成的。
数据结构(C语言)【经典题库】含答案

数据结构(C语言)【经典题库】含答案数据结构(C语言)【经典题库】含答案数据结构是计算机科学中的重要基础,对于程序员和软件工程师来说,熟练掌握数据结构是必不可少的。
在C语言中,有许多经典的数据结构题目,通过解答这些题目,可以深入理解数据结构的原理和应用。
本文将介绍一些经典的数据结构题目,同时附上详细的答案。
一、数组题目1. 给定一个整型数组arr和一个整数target,找出数组中两个数的和为target的所有组合。
```C#include <stdio.h>void findPairs(int arr[], int n, int target) {int i, j;for (i = 0; i < n - 1; i++) {for (j = i + 1; j < n; j++) {if (arr[i] + arr[j] == target) {printf("%d, %d\n", arr[i], arr[j]);}}}}int main() {int arr[] = {2, 4, 6, 8, 10};int target = 14;int n = sizeof(arr) / sizeof(arr[0]);findPairs(arr, n, target);return 0;}```答案解析:使用两层循环遍历数组中的每对元素,判断它们的和是否等于目标值target,如果是则输出。
时间复杂度为O(n^2)。
2. 给定一个整型数组arr和一个整数k,求出数组中连续子数组的最大和。
```C#include <stdio.h>int maxSubArraySum(int arr[], int n) {int maxSum = arr[0];int currentSum = arr[0];for (int i = 1; i < n; i++) {currentSum = (currentSum + arr[i] > arr[i]) ? currentSum + arr[i] : arr[i];if (currentSum > maxSum) {maxSum = currentSum;}}return maxSum;}int main() {int arr[] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};int n = sizeof(arr) / sizeof(arr[0]);int maxSum = maxSubArraySum(arr, n);printf("最大和为:%d\n", maxSum);return 0;}```答案解析:使用动态规划的思想,定义两个变量`maxSum`和`currentSum`,分别表示当前的最大和和累加和。
数据结构c语言版试题及答案

数据结构c语言版试题及答案一、选择题(每题2分,共10分)1. 在C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A2. 若有一个结构体数组,下列哪个函数可以用来初始化数组中的每个元素?A. memsetB. memcpyC. strcpyD. bzero答案:A3. 在C语言中,以下哪个函数用于动态分配内存?A. mallocB. callocC. reallocD. all of the above答案:D4. 对于一个链表,以下哪个操作是正确的?A. 插入节点B. 删除节点C. 遍历链表D. all of the above答案:D5. 在C语言中,以下哪个函数用于释放动态分配的内存?A. freeB. mallocC. callocD. realloc答案:A二、填空题(每题3分,共15分)1. 结构体定义的关键字是______。
答案:struct2. 在C语言中,动态分配内存失败时,malloc函数返回______。
答案:NULL3. 单链表的头节点指针通常初始化为______。
答案:NULL4. 双向链表中,每个节点包含______个指针。
答案:两个5. 树的深度优先遍历包括______、中序遍历和后序遍历。
答案:前序遍历三、简答题(每题5分,共20分)1. 请简述C语言中结构体和联合体的区别。
答案:结构体(struct)可以包含不同类型的数据,并且可以有多个实例;联合体(union)可以包含不同类型的数据,但是只能有一个实例,即在任意时刻只能存储其中一个成员的值。
2. 动态内存分配的优点是什么?答案:动态内存分配允许程序在运行时根据需要分配内存,这样可以更有效地使用内存资源,并且可以创建大小不固定的数据结构。
3. 链表相比于数组有哪些优点?答案:链表的优点包括动态大小,可以灵活地插入和删除节点,不需要预先知道数据的大小。
数据结构c语言期末考试题库及详解答案

数据结构c语言期末考试题库及详解答案数据结构C语言期末考试题库及详解答案一、选择题1. 在数据结构中,线性表的顺序存储结构被称为:A. 链式存储结构B. 栈C. 队列D. 数组答案:D2. 下列关于栈的描述,错误的是:A. 栈是一种特殊的线性表B. 栈的特点是后进先出C. 栈顶元素是最后插入的元素D. 栈的插入和删除操作都发生在栈顶答案:C二、填空题1. 在C语言中,定义一个具有10个元素的整型数组可以使用语句:________。
答案:int arr[10];2. 链表与数组相比,其优点是________。
答案:动态内存分配,不需要预先知道数据规模三、简答题1. 简述二叉树的遍历方法有哪些,并说明它们的特点。
答案:二叉树的遍历方法主要有前序遍历、中序遍历和后序遍历三种。
前序遍历首先访问根节点,然后递归地遍历左子树和右子树;中序遍历首先遍历左子树,然后访问根节点,最后遍历右子树;后序遍历首先遍历左子树和右子树,最后访问根节点。
每种遍历方法都可以用来对二叉树进行不同的操作和分析。
2. 什么是哈希表?它在实际应用中有哪些优点?答案:哈希表是一种通过哈希函数将键映射到表中一个位置来访问记录的数据结构。
它的优点包括:快速的数据访问速度,因为哈希表通常在常数时间内完成查找;动态的内存分配,可以根据需要调整存储空间;以及灵活的键值对存储方式。
四、编程题1. 编写一个C语言函数,实现单链表的逆序输出。
答案:```c#include <stdio.h>#include <stdlib.h>typedef struct Node {int data;struct Node *next;} Node;void reversePrint(Node *head) {if (head == NULL) return;reversePrint(head->next);printf("%d ", head->data);}int main() {Node *head = (Node *)malloc(sizeof(Node));head->data = 1;head->next = NULL;// 假设链表已经构建完毕reversePrint(head);return 0;}```2. 请实现一个C语言函数,用于计算一个字符串中不同字符的数量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构试题一一、单项选择题(每小题3分,共30分)1、在有n 个叶子结点的哈夫曼树中,其结点总数为()。
A、不确定B、2nC、2n+1D、2n-12、下列序列中,()是执行第一趟快速排序得到的序列(排序的关键字类型是字符串)。
A、[da,ax,eb,de,bb]ff[ha,gc]B、[cd,eb,ax,da]ff[ha,gc,bb]C、[gc,ax,eb,cd,bb]ff[da,ha]D、[ax,bb,cd,da]ff[eb,gc,ha]3、若线性表最常用的操作是存取第i 个元素及其前驱的值,则采用()存储方式节省时间。
A、单链表B、双链表C、单循环链表D、顺序表4、下列排序算法中,时间复杂度不受数据初始状态影响,恒为O(nlogn)的是()。
A、堆排序B、冒泡排序C、直接选择排序D、快序排序5、某二叉树的先序序列和后序序列正好相反,则该二叉树一定是()的二叉树。
A、空或只有一个结点B、高度等于其结点数C、任意结点无左孩子D、任意结点无右孩子6、下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是()。
A、堆排序B、冒泡排序C、直接选择排序D、快序排序7、快速排序算法在最好情况下的时间复杂度为()。
A、O(n)B、O(n 2 )C、O(nlogn)D、O(logn)8、已知数据表A中每个元素距其最终位置不远,则采用()排序算法最省时间。
A、堆排序B、插入排序C、直接选择排序D、快序排序9、带权有向图G用邻接矩阵A存储,则顶点i的入度为A中()。
A、第i行非∞的元素之和B、第i列非∞的元素之和C、第i行非∞且非0的元素之和D、第i列非∞且非0的元素之和10、在有n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为()。
A、O(n)B、O(n 2 )C、O(nlogn)D、O(logn)二、判断题(认为对的在题后的括号内打“√”,错的打“ⅹ”,每小题1分,共10分)1.对任意一个图,从它的某个顶点出发进行一次深度优先或广度优先搜索遍历可访问该图的每个顶点。
( )2. 在索引顺序表上实现分快查找,在等概率查找情况下,其平均查找长度不仅与表的个数有关,而且与每一块中的元素个数有关。
( )3、只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。
( )4、图G的最小生成树的代价一定小于其他生成树的代价。
( )5、已知一棵树的先序序列和后序序列,一定能构造出该树。
( )6、对一个堆按层次遍历,不一定能得到一个有序序列。
( )7、设与一棵树T 所对应的二叉树为BT,则与T 中的叶子结点所对应的BT中的结点也一定是叶子结点。
( )8、不管ADT栈是用数组实现,还是用链表的指针实现,POP(S)与Push(x,S) 的耗时均为O(n)。
( )9、如果删除二叉排序树中一个结点,再按照二叉排序树的构造原则重新插入上去,一定能得到原来的二叉排序树。
( )10、快速排序是排序算法中最快的一种。
( )三、填空题(每小题2分,共20分)1、在双向循环表中,在p所指的结点之后插入指针f所指的结点,其操作为:___ ______=p;f→next=p→next;_____=f; p→next=f。
2、在有序表A[1…20]中,采用二分查找算法查找元素值等于A[12]的元素,所比较过的元素的下标依次为__________。
3、若某串的长度小于一个常数,则采用_________存储方式最节省空间。
4、在有n个顶点的有向图中,每个顶点的度最大可达_________。
5、已知二叉树中叶子数为50,仅有一个孩子的结点数为30,则总结点数为__________。
6、设键值序列为{K1,K2,…,Kn},用筛选法建堆则必须从第_______个元素开始筛选。
7、在二叉链表中判断某指针p所指结点为叶子结点的条件是_________。
8、直接选择排序算法在最好情况下所作的交换元素的次数为___ _____。
9、有n个球队参加的足球联赛按主客场制进行比赛,共需进行_______比赛。
10、下列排序算法中,占用辅助空间最多的是_________( 堆排序,希尔排序,快速排序,归并排序)。
四、简答题(每题10分,共60分)1、在单链表、双链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点p从相应的链表中删去?若可以,其时间复杂度各为多少?2、设有一组关键字(17,13,14,153,29,35)需插入到表长为12的散列表中,请回答以下问题:(1)设计一个适合该散列表的散列函数。
(2)用设计的散列函数将上述关键字插入到散列表中,并用线性探测法解决冲突,画出其结构;并指出用线性探测法解决冲突时构造散列表的装填因子为多少?3、对n个顶点的无向图和有向图,采用邻接矩阵和邻接表表示时,如何判别下列有关问(1)图中有多少条边?(2)任意两个顶点i和j是否有边相连?(3)任意一个顶点的度是多少?4、已知下面二叉排序树的各结点的值依次为1…9,请标出各结点的值。
5、具有3个结点的树和具有3个结点的二叉树,它们的所有不同形态有哪些?数据结构试题1参考答案一、1——5:DADAB 6——10:CCBDD二、1——5:ⅹ√ⅹⅹ√6——10:√ⅹⅹⅹⅹ三、1、①f→prior,②p→next→prior 2、10 15 12 3、顺序压缩4、2(n-1)5、1296、n/2的最小整数7、(p→lchild==NULL)&&(p→rchild==NULL)8、0 9、n(n-1) 10、归并排序四、1、答案:在单链表中不能删除,而在双链表和单循环链表中可以删除p结点。
双链表的删除时间复杂度为O(1),单循环链表删除p 结点的时间复杂度为O(n)。
2、答案:(1)由于散列表的长度为12,则可选不超过表长的最大素数11作为除留余数法的模,则可得其散列函数为h(k)=k%11。
(2)若用线性探测法解决冲突,则可构造出散列表如下:13 14 35 17 29 1530 1 2 3 4 5 6 7 8 9 1011此时,其装填因子为6/12=1/2,若用链式法解决冲突,则其散列表为:3、答案:(1)无向图的邻接矩阵所有数值之和除以2,为边数。
有向图邻接矩阵各行数值之和为总边数。
邻接表表示无向图内部顶点个数除以2,有向图内部顶点个数。
(2)无向图中I 行和J 列的交叉点的值是否为1。
有向图I 行J 列交叉点或I列和J行交叉点的值为1。
(3)无向图顶点的度为每一行的数值之和;有向图顶点度为该行和该列数值之和。
4答案:5、答案:具有3个结点的树的形态为:三个结点的两种树形态,无左右之分。
具有3个结点的二叉树的形态为:5种形态,有左右之分。
数据结构试题2一、单项选择题(每小题3分,共30分)1、下列排序算法中,()排序在每趟结束后,不一定能选出一个元素放到其排好序的最终位置上。
A、选择B、冒泡C、归并D、堆2、若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
A、单链表B、仅有头指针的单循环链表C、双链表D、仅有尾指针的单循环链表3、串的长度是()。
A、串中不同字符的个数B、串中不同字母的个数C、串中所含字符的个数且字符个数大于0D、串中所含字符的个数4、有一个散列表,表长度m为100,采用除余法构造散列函数,即H(k)=k%P,(P 小于等于m),为使散列函数有较好的性能,P 的选择应是()。
A、99B、97C、91D、935、在包括n个键值的二叉排序树中查找一个键值,其平均比较的量级为()。
A、O(n)B、O(logn)C、O(nlogn)D、O(n)6、对有14个元素的有序表A[1…14]作二分查找,查找A[4]时的被比较元素依次为()。
A、A[1],A[2],A[3],A[4]B、A[1],A[14],A[7],A[4]C、A[7],A[3],A[5],A[4]D、A[7],A[5],A[3],A[4]7、具有65个结点的完全二叉树其深度为()。
A、8B、7C、6D、58、带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中()。
A、第i行非无穷元素之和B、第i列非无穷元素之和C、第i行非零且非无穷元素个数D、第i列非零且非无穷元素个数9、队列操作的原则是()。
A、先进先出B、后进先出C、只能进行插入D、只能进行删除10、若表R在排列前已按元素键值递增顺序排序,采用()的比较次数少。
A、直接插入排序B、快速排序C、归并排序D、选择排序二、判断题(认为对的,在题后的括号内打“√”,错的打“ⅹ”,每小题1分,共10分)1、在栈空的情况下,不能做退栈运算,否则产生下溢。
()2、在快速排序算法中,取待排序的n个记录中的第一个的键值为基准,将所有记录分为两组,读记录就排在这两组的中间,这也是该记录的最终位置。
()3、在索引顺序表查找方法中,对索引顺序表可以使用顺序表查找方法,也可以使用二分查找方法。
()4、设有键值序列(k1,k2,…,kn),当i>n/2时,任何一个序列(k1,k2,…,kn)一定是堆。
()5、在向二叉排序树中插入一个新结点时,需要比较结点的次数可能大于此二叉树的高度h。
()6、在一个有向图的邻接表或逆邻接表中,如果某个顶点的链表为空,则该顶点的度一定为零。
()7、双循环链表中,任一结点的前驱指针均为不空。
()8、线性表采用链式存储方式和顺序存储方式,执行插入、删除运算的算法时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。
()9、如果有向图G=(V,E)的拓扑序列不唯一,则图中必有两条弧<vi,vj>和<vj,vi> 存在。
()10、矩阵压缩存储的方法是用三元组表存储矩阵元素。
()三、填空题(每小题2分,共20分)1、设sq[1…maxsize]为一个顺序存储的栈,变量top 指示栈顶元素的位置。
作进栈操作时,必须判别____。
如要把栈顶元素取到x中,需执行语句__ ___。
2、设一个二叉树共有50个叶结点(终端结点),则共有_______个度为2的结点。
3、在单链表中,若要在指针p所指结点(data,next)后插入指针s所指结点,则需要执行下列两条语句:s→next=p→next;_________。
4、3个结点可构成_________棵不同形状的树。
5、利用直接选择排序算法对n个记录进行排序,最坏情况下,记录交换的次数为_______6、如果含n个顶点的图是一个环,则它有_________棵生成树。
7、如果要将序列{50,16,23,68,94,70,73}建成堆,则只需把16 与______ 相互交换即可。
8、在一棵高度为h 的平衡二叉树中,最少含有_________个结点,最多含有2 h -1 个结点。