数据结构基础概念试题
数据结构考试题及答案
数据结构考试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,线性结构和非线性结构的区别在于()。
A. 结构中元素的个数B. 结构中元素之间是否有一对一的对应关系C. 结构中元素之间是否有层次关系D. 结构中元素之间是否有顺序关系答案:C2. 链式存储结构相比于顺序存储结构的优势在于()。
A. 节省存储空间B. 可以方便地进行插入和删除操作C. 可以随机访问任意元素D. 可以存储在非连续的存储单元中答案:B3. 下列关于栈的描述,正确的是()。
A. 栈是一种先进先出(FIFO)的数据结构B. 栈是一种后进先出(LIFO)的数据结构C. 栈可以实现递归算法D. 栈只能进行单一方向的插入和删除操作答案:B4. 在二叉树中,度为2的节点称为()。
A. 叶子节点B. 内部节点C. 分支节点D. 根节点答案:B5. 哈希表解决冲突的常用方法不包括()。
A. 分离链接法B. 开放寻址法C. 链地址法D. 二分查找法答案:D6. 快速排序算法的时间复杂度在最坏情况下是()。
A. O(n)B. O(nlogn)C. O(n^2)D. O(2^n)答案:C7. 在图的遍历中,深度优先搜索(DFS)使用的是()。
A. 队列C. 链表D. 数组答案:B8. 以下哪种排序算法是不稳定的()。
A. 冒泡排序B. 快速排序C. 归并排序D. 插入排序答案:B9. 一个具有n个顶点的无向图,其边的最大数量是()。
A. nB. n(n-1)/2C. n^2答案:B10. 以下哪个算法不是动态规划算法()。
A. 斐波那契数列B. 最长公共子序列C. 快速排序D. 0/1背包问题答案:C二、填空题(每题2分,共20分)1. 在数据结构中,一个算法的时间复杂度为O(n^2),表示该算法的执行时间随着输入数据规模的增加而______。
答案:呈二次方增长2. 一个长度为n的数组,使用二分查找算法查找一个元素的平均时间复杂度为O(____)。
数据结构试卷及答案
数据结构试卷及答案一、选择题(共30题,每题2分,共60分)1. 数据结构是解决什么问题的基础?A. 数据的存储和组织问题B. 数据的计算和分析问题C. 数据的传输和交换问题D. 数据的加密和解密问题2. 下列哪种数据结构可以实现后进先出(LIFO)的特性?A. 栈B. 队列C. 链表D. 树3. 哪种数据结构可以快速地查找和插入元素?A. 数组B. 链表C. 栈D. 队列4. 在二叉树中,每个节点最多有几个子节点?A. 0B. 1C. 2D. 35. 下列哪种排序算法的时间复杂度是O(nlogn)?A. 冒泡排序B. 插入排序C. 快速排序D. 选择排序...二、填空题(共10题,每题4分,共40分)1. 数据结构中,关系密切的元素组成的集合称为________。
2. 对一个链表进行插入或删除操作,时间复杂度是________。
3. 在树结构中,没有子节点的节点称为________。
4. 广度优先搜索(BFS)使用的数据结构是________。
5. 在堆排序中,堆的建立时间复杂度是________。
...三、简答题(共5题,每题10分,共50分)1. 请简要解释什么是数组,并说明其在数据结构中的优势和限制。
2. 请解释栈和队列这两种数据结构的特点和应用场景,并给出一个实际的例子。
3. 请解释什么是二叉树,给出一个二叉树的例子,并说明其遍历的方法。
4. 请简要解释图的概念,并说明图的遍历方法。
5. 请解释并比较快速排序和归并排序两种常用的排序算法,包括它们的时间复杂度和空间复杂度。
...答案解析:一、选择题答案:1. A2. A3. B4. C5. C二、填空题答案:1. 集合2. O(1)3. 叶节点4. 队列5. O(n)三、简答题答案:1. 数组是一种连续存储数据的结构,其优势是在已知索引的情况下能快速访问元素,但限制在插入和删除操作上效率较低。
2. 栈是一种后进先出(LIFO)的数据结构,适用于需要倒序处理的场景,如函数调用栈。
数据结构期末考试(题集)
数据结构的基本概念选择题(1)顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A.线性结构B.非线性结构C.存储位置D.指针(2)假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产,子女可以继承父亲或母亲的遗产;子女间不能相互继承,则表示该遗产继承关系的最合适的数据结构应该是()。
A.树B.图C.线性表D.集合(3)计算机所处理的数据一般具有某种内在联系,这是指()。
A.数据和数据之间存在某种关系B.元素和元素之间存在某种关系C.元素内部具有某种结构D.数据项和数据项之间存在某种关系(4)在数据结构中,与所使用的计算机无关的是数据的()。
A.树B.图C.线性表D.集合(5)在存储数据时,通常不仅要存储各数据元素的值,还要存储()。
A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法(6)在链接存储结构中,要求()。
A.每个结点占用一片连续的存储区域B.所有结点占用一片连续的存储区域C.结点的最后一个域是指针类型D.每个结点有多少个后继就设多少个指针(7)下列说法不正确的是()。
A.数据元素是数据的基本单位B.数据项是数据中不可分割的最小单位C.数据可由若干个数据项构成D.数据元素可由若干个数据项构成(8)以下与数据的存储结构无关的术语是()。
A.循环队列B.链表C.散列表D.栈(9)以下术语属于逻辑结构的是()。
A.顺序表B.哈希表C.有序表D.单链表(10)可以用()定义一个完整的数据结构。
A.数据元素B.数据对象C.数据关系D.抽象数据类型(11)对于数据结构的描述,下列说法中不正确的是()。
A.相同的逻辑结构对应的存储结构也必相同B.数据结构由逻辑结构、存储结构和基本操作三方面组成C.数据结构基本操作的实现与存储结构有关D.数据的存储结构是数据的逻辑结构的机内实现(12)以下关于链接存储结构的叙述中,()是不正确的。
数据结构考试试题
数据结构考试试题一. 简答题1. 什么是数据结构?数据结构的分类有哪些?数据结构是指各种数据元素之间的关系,以及数据元素的存储组织方式。
其分类包括线性结构、树形结构和图形结构。
2. 请定义以下概念:a) 数据抽象b) 算法c) 栈d) 队列a) 数据抽象是指对数据进行抽象化处理,将其看作一个个整体,忽略其内部细节,而只考虑其对外的行为。
b) 算法是一系列定义明确的操作步骤,以解决特定问题或实现特定功能。
c) 栈是一种操作受限的线性结构,只允许在一端进行插入和删除操作,遵循先进后出的原则。
d) 队列也是一种线性结构,允许在一端插入元素,另一端删除元素,遵循先进先出的原则。
二. 计算题1. 给定一个数组 [1, 3, 5, 7, 9, 11, 13, 15],请写出使用二分查找算法查找元素 9 的过程和最终结果。
假设数组下标从0开始。
初始状态下,设置左指针left指向0,右指针right指向7。
计算中间位置mid的值,即mid = (left + right) / 2 = (0 + 7) / 2 = 3。
比较mid位置上的元素与目标元素9的大小:- 若arr[mid] < 9,表示目标元素在右侧,更新left = mid + 1 = 4。
- 若arr[mid] > 9,表示目标元素在左侧,更新right = mid - 1 = 2。
- 若arr[mid] = 9,表示找到目标元素,返回结果。
此时,left = 4,right = 2,满足结束条件,说明未找到目标元素。
2. 给定一个树结构的数据如下所示,请写出先序遍历和中序遍历的结果。
A/ \B C/ \ \D E F先序遍历结果:A -> B -> D -> E -> C -> F中序遍历结果:D -> B -> E -> A -> C -> F三. 编程题请编写一个函数,实现将一个数组中的奇数和偶数分别排在数组的前后位置。
数据结构的试题及答案
数据结构的试题及答案一、选择题1. 在数据结构中,线性表的顺序存储方式被称为:A. 栈B. 队列C. 链表D. 数组答案:D2. 以下哪种数据结构是动态数据结构?A. 数组B. 链表C. 栈D. 队列答案:B3. 树的度是树内所有节点的度的最大值,树的深度是树的最长路径上的节点数。
以下哪个选项正确描述了树的度和深度?A. 度是节点的最大值,深度是路径上节点数B. 度是路径上节点数,深度是节点的最大值C. 度是节点的最大值,深度是节点的最大值D. 度是路径上节点数,深度是路径上节点数答案:A二、简答题1. 请简述链表和数组的区别。
答案:链表和数组是两种不同的数据存储方式。
数组是连续的内存空间,可以通过索引快速访问元素,但插入和删除操作可能需要移动大量元素。
链表由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针,链表的插入和删除操作不需要移动其他元素,但访问特定元素需要从头开始遍历。
2. 什么是二叉搜索树?它有哪些特点?答案:二叉搜索树(BST)是一种特殊的二叉树,其中每个节点的值都大于或等于其左子树中的任何节点的值,并且小于或等于其右子树中的任何节点的值。
BST的主要特点是它支持快速的查找、插入和删除操作,时间复杂度为O(log n)。
三、计算题1. 给定一个链表,编写一个算法来删除链表中的重复元素。
答案:以下是删除链表中重复元素的算法步骤:- 遍历链表,使用一个哈希表来记录已经遇到的元素。
- 当遍历到一个新元素时,检查它是否已经在哈希表中。
- 如果已经存在,删除当前节点,并继续遍历。
- 如果不存在,将元素添加到哈希表中,并继续遍历。
- 完成遍历后,链表中的重复元素将被删除。
2. 假设有一个二叉搜索树,编写一个算法来找到树中第k小的元素。
答案:以下是找到二叉搜索树中第k小元素的算法步骤:- 从根节点开始,使用中序遍历(左-根-右)。
- 遍历过程中,记录访问的节点数量。
- 当访问到第k个节点时,该节点即为所求的第k小的元素。
(完整版)数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。
A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。
A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。
for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。
for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。
int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。
2. 数据的存储结构被分为__________、_________、__________和__________四种。
3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。
4. 一种抽象数据类型包括__________和__________两个部分。
5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
数据结构试题和答案
数据结构试题和答案一、单项选择题1. 下列关于数据结构的定义,错误的是:A. 数据结构是指数据元素之间的关系。
B. 数据结构是指数据的逻辑结构和存储结构。
C. 数据结构是计算机存储、组织数据的方法。
D. 数据结构是指算法和程序设计的方法。
答案:D2. 在栈中,允许进行的操作是:A. 进栈(push)和出栈(pop)B. 进栈(push)和查找(search)C. 进栈(push)和修改(modify)D. 进栈(push)和删除(delete)答案:A3. 以下哪种数据结构不适合用于存储图的边信息?A. 邻接矩阵B. 邻接表C. 十字链表D. 哈希表答案:D二、填空题1. 树的度为2的节点称为________。
答案:二叉树2. 在链表中,存储数据元素的节点由数据域和________组成。
答案:指针域三、简答题1. 请解释什么是数据结构。
答案:数据结构是计算机中组织和存储数据的方法和技术,它涉及到数据的逻辑结构和物理存储结构,能够有效地组织和管理数据,提高数据的检索和操作效率。
2. 请简要描述栈和队列的特点和应用场景。
答案:栈是一种遵循先进后出(Last-In-First-Out,LIFO)原则的数据结构,适用于需要后进先出操作的场景,如函数的调用过程、表达式求值等。
队列是一种遵循先进先出(First-In-First-Out,FIFO)原则的数据结构,适用于需要先进先出操作的场景,如任务调度、消息队列等。
四、编程题请使用C语言编写一个实现栈的基本操作的程序,包括进栈和出栈的功能。
```c#include <stdio.h>#include <stdlib.h>#define MAX_SIZE 100typedef struct Stack {int data[MAX_SIZE];int top;} Stack;void init(Stack *s) {s->top = -1;}int isEmpty(Stack *s) {return s->top == -1;}int isFull(Stack *s) {return s->top == MAX_SIZE - 1;}void push(Stack *s, int value) { if (isFull(s)) {printf("Stack is full.\n"); return;}s->data[++s->top] = value; }int pop(Stack *s) {if (isEmpty(s)) {printf("Stack is empty.\n"); return -1;}return s->data[s->top--];}int main() {Stack stack;init(&stack);push(&stack, 1);push(&stack, 2);push(&stack, 3);printf("%d\n", pop(&stack)); // 输出3push(&stack, 4);printf("%d\n", pop(&stack)); // 输出4printf("%d\n", pop(&stack)); // 输出2printf("%d\n", pop(&stack)); // 输出1return 0;}```以上是一份简单的栈实现的代码,通过调用push函数进行进栈操作,调用pop函数进行出栈操作。
数据结构基本概念练习题
数据结构基本概念练习题1、选择练习题1)执行下面程序段时,执行S语句的次数为-------for(int I=1;I<=n;I++)for(int j=1;j<=I;j++)S;(A) n^2 (B) n^2/2 (C) n(n+1) (D) n(n+1)/2答案:D2)算法是指令的有限序列,其中每一条指令表示一个或多个操作。
下列______不属于算法的五个特性之一。
(A) 有一或多个输出(B) 有零或多个输入(C) 有穷性(D) 通俗易懂性答案:D3)若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
(A) 顺序表(B) 双链表(C) 带头结点的双循环链表(D) 单循环链表答案:A4)下面的叙述正确的是()(A) 线性表在链式存储时,查找第i个元素的时间同i的值成正比;(B) 线性表在链式存储时,查找第i个元素的时间同i的值无关;(C) 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比;(D) 以上说法都不对.答案:A5) 若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。
(A) 单链表(B) 顺序表(C) 单向循环链表(D) 双链表答案:B6) 在双向链表指针p指向的结点前插入一个指针q指向的结点操作是( )。
(A) p->prior=q;q->next=p;p->prior->next=q;q->prior=q;(B) p->prior=q;p->prior->next=q;q->next=p;q->Prior=p->prior;(C) q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q;(D) q->prior=p->prior;q->next=q;p->prior=q;p->prior=q;答案:C7) 设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。
数据结构试题及答案(十套)
一、单选题(每题 2 分,共20分)1.对一个算法的评价,不包括如下(B )方面的内容。
A.健壮性和可读性B.并行性C.正确性D.时空复杂度2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( )。
A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3.对线性表,在下列哪种情况下应当采用链表表示?( )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 35.AOV网是一种()。
A.有向图B.无向图C.无向无环图D.有向无环图6.采用开放定址法处理散列表的冲突时,其平均查找长度()。
A.低于链接法处理冲突 B. 高于链接法处理冲突C.与链接法处理冲突相同D.高于二分查找7.若需要利用形参直接访问实参时,应将形参变量说明为()参数。
A.值B.函数C.指针D.引用8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。
A.行号B.列号C.元素值D.非零元素个数9.快速排序在最坏情况下的时间复杂度为()。
A.O(log2n) B.O(nlog2n)C.0(n) D.0(n2)10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( )。
A. O(n)B. O(1)C. O(log2n)D. O(n2)二、运算题(每题 6 分,共24分)1.数据结构是指数据及其相互之间的______________。
当结点之间存在M对N (M:N)的联系时,称这种结构为_____________________。
数据结构试题库及答案
数据结构试题库及答案一、选择题1. 在数据结构中,线性结构的特点是:A. 元素之间存在一对一关系B. 元素之间存在一对多关系C. 元素之间存在多对多关系D. 元素之间存在一对一或多对多关系答案:A2. 栈(Stack)是一种特殊的线性表,其特点是:A. 只能在一端进行插入和删除操作B. 可以在两端进行插入和删除操作C. 只能在一端进行插入操作,另一端进行删除操作D. 可以在任意位置进行插入和删除操作答案:A3. 在二叉树中,度为1的节点数目为2,度为0的节点数目也为2,该二叉树的节点总数是:A. 5B. 6C. 7D. 8答案:B二、简答题1. 请简述什么是哈希表,并说明其主要优点。
答案:哈希表是一种通过哈希函数将键映射到表中一个位置来访问记录的数据结构。
其主要优点包括:平均情况下,查找、插入和删除操作的时间复杂度为O(1),即常数时间内完成操作;空间效率高,能够存储大量数据。
2. 描述图的深度优先搜索(DFS)算法的基本思想。
答案:深度优先搜索算法的基本思想是从一个顶点开始,尽可能深地搜索图的分支。
搜索过程中使用一个栈来保存路径上的顶点。
当搜索到一个顶点时,先访问该顶点,然后依次搜索其所有未被访问过的邻接顶点。
如果当前顶点的所有邻接顶点都被访问过,则回溯到上一个顶点,继续搜索其他邻接顶点。
三、应用题1. 给定一个无向图,使用邻接表表示,请编写一个算法找出图中的所有连通分量。
答案:首先,创建一个访问过的顶点集合。
然后,从图中任意一个未被访问的顶点开始,执行深度优先搜索(DFS)。
每次DFS完成后,就找到了一个连通分量。
重复这个过程,直到所有顶点都被访问过,即可找到图中的所有连通分量。
2. 假设有一个数组,需要频繁地进行查找、插入和删除操作,请设计一个适合这种场景的数据结构,并说明其优势。
答案:对于这种场景,可以使用平衡二叉搜索树(如AVL树或红黑树)。
这些数据结构可以保证在最坏情况下,查找、插入和删除操作的时间复杂度为O(log n)。
数据结构试题(含答案)
数据结构试题(含答案)数据结构试题(含答案)一、选择题1. 数据结构是计算机科学中的一个重要概念。
下列选项中,不属于数据结构的是:A. 数组B. 栈C. 数据库D. 链表答案:C2. 在数据结构中,栈(Stack)是一种后进先出(LIFO)的数据结构。
下列操作中,不属于栈的是:A. 入栈B. 出栈C. 遍历D. 清空栈答案:C3. 链表(Linked List)是一种常见的数据结构,它由一系列节点组成,每个节点包含两个部分:数据和指向下一个节点的指针。
下列选项中,不属于链表的是:A. 单链表B. 双链表C. 循环链表D. 二叉树答案:D4. 哈希表(Hash Table)是一种根据关键码直接访问存储位置的数据结构。
下列选项中,不属于哈希表的优点是:A. 快速查找B. 插入和删除操作效率高C. 数据无序D. 冲突较少答案:C二、填空题1. 树(Tree)是一种非线性数据结构,它由一组以边连接的节点组成。
树中每个节点最多可以有________个子节点。
答案:无限制/任意个2. 图(Graph)是由节点和连接节点的边组成的数据结构。
图中节点的度是指与该节点相连接的边的________。
答案:数量3. 广度优先搜索(BFS)和深度优先搜索(DFS)是常用的图遍历算法。
在BFS中,使用________结构来保存待访问的节点。
答案:队列4. 在二叉搜索树(Binary Search Tree)中,左子树中的每个节点的值都小于根节点的值,右子树中的每个节点的值都大于根节点的值。
这种特性称为_______________。
答案:二叉搜索树性质三、简答题1. 请简要说明线性数据结构和非线性数据结构的区别。
答案:线性数据结构是指数据元素之间存在一对一的线性关系,例如数组、栈、队列等;而非线性数据结构是指数据元素之间存在一对多或多对多的关系,例如树、图等。
线性数据结构的存储方式是连续的,非线性数据结构的存储方式是离散的。
数据结构基础概念试题
数据结构试题一、单选题1、在数据结构的讨论中把数据结构从逻辑上分为(C )A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构。
2、采用线性链表表示一个向量时,要求占用的存储空间地址(D )A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。
A nB n/2C (n-1)/2D (n+1)/24、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。
A s→link = p→link; p→link = s;B p→link = s; s→link = q;C p→link = s→link; s→link = p;D q→link = s; s→link = p;5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。
A 起泡排序B 堆排序C 锦标赛排序D 快速排序6、设有两个串t和p,求p在t中首次出现的位置的运算叫做( B )。
A 求子串B 模式匹配C 串替换D 串连接7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j 从1到10。
所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是( C )。
A 80B 100C 240D 2708、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。
A 栈B 队列C 循环队列D 优先队列9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( C )。
10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。
A ( front - rear + 1) % mB ( rear - front + 1) % mC ( front - rear + m) % mD ( rear - front + m) % m11、一个数组元素a[i]与( A )的表示等价。
数据结构基本概念练习题
数据结构基本概念练习题1、选择练习题1)执行下面程序段时,执行S语句的次数为-------for(int I=1;I<=n;I++)for(int j=1;j<=I;j++)S;(A) n^2 (B) n^2/2 (C) n(n+1) (D) n(n+1)/2答案:D2)算法是指令的有限序列,其中每一条指令表示一个或多个操作。
下列______不属于算法的五个特性之一。
(A) 有一或多个输出(B) 有零或多个输入(C) 有穷性(D) 通俗易懂性答案:D3)若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
(A) 顺序表(B) 双链表(C) 带头结点的双循环链表(D) 单循环链表答案:A4)下面的叙述正确的是()(A) 线性表在链式存储时,查找第i个元素的时间同i的值成正比;(B) 线性表在链式存储时,查找第i个元素的时间同i的值无关;(C) 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比;(D) 以上说法都不对.答案:A5) 若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。
(A) 单链表(B) 顺序表(C) 单向循环链表(D) 双链表答案:B6) 在双向链表指针p指向的结点前插入一个指针q指向的结点操作是( )。
(A) p->prior=q;q->next=p;p->prior->next=q;q->prior=q;(B) p->prior=q;p->prior->next=q;q->next=p;q->Prior=p->prior;(C) q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q;(D) q->prior=p->prior;q->next=q;p->prior=q;p->prior=q;答案:C7) 设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。
数据结构试题及答案
数据结构试题及答案The document was prepared on January 2, 2021第一章概论一、选择题1、研究数据结构就是研究 D .A. 数据的逻辑结构B. 数据的存储结构C. 数据的逻辑结构和存储结构D. 数据的逻辑结构、存储结构及其基本操作研究非数值计算的程序设计问题中,计算机操作对象以及他们之间的关系和操作2、算法分析的两个主要方面是 A .A. 空间复杂度和时间复杂度B. 正确性和简单性C. 可读性和文档性D. 数据复杂性和程序复杂性3、具有线性结构的数据结构是 D .线性结构就是:在非空有限集合中,存在为一个被称为第一个的数据元素和最后一个元素,有除了第一个元素,集合中每一个元素均只有一个前驱,除了最后一个元素有唯一后继链表、栈、队列、数组、串A. 图B. 树C. 广义表线性表的推广D. 栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、B 等5个特性.A. 可执行性、可移植性和可扩充性B. 可执行性、有穷性和确定性C. 确定性、有穷性和稳定性D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是 C .fori=0;i<m;i++forj=0;j<n;j++aij=ij;A. Om2B. On2C. OmnD. Om+n6、算法是 D .为了解决某一问题而规定的一个有限长的操作序列A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为3n+nlog2n+n2+8,其时间复杂度表示 C .A. OnB. Onlog2n C. On2 D. Olog2n8、下面程序段的时间复杂度为 C .i=1;whilei<=ni=i3;A. OnB. O3nC. Olog3n D. On39、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的B 和运算等的学科.关系和操作A. 结构B. 关系C. 运算D. 算法10、下面程序段的时间复杂度是 A .i=s=0;whiles<n{i++;s+=i; }A. OnB. On 2C. Olog 2nD. On 311、抽象数据类型的三个组成部分分别为 A.A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是 D.A. 正确性算法应能正确地实现预定的功能B. 易读性算法应易于阅读和理解,以便调试、修改和扩充C. 健壮性当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果D. 高效性即达到所需要的时间性能空间13、下列程序段的时间复杂度为B.x=n;y=0;whilex>=y+1y+1y=y+1;A. OnB. )(n OC. O1D. On 2二、填空题1、程序段“i=1;whilei<=n i=i2;”的时间复杂度为 log2n .2、数据结构的四种基本类型中, 树形结构 的元素是一对多关系.三、综合题1、将数量级O1,ON,ON 2,ON 3,ONLOG 2N,OLOG 2N,O2N 按增长率由小到大排序.答案: O1 Olog 2N ON ONlog 2N ON 2 ON 3 O2N一、填空题1. 数据结构被形式地定义为D, R,其中D 是数据元素的有限集合,R 是D 上的关系有限集合.2. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容.3. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构.4. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系.5. 在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点.6. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个.7. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个.8.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引、散列.9. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序.10. 一个算法的效率可分为时间效率和空间效率.11. 任何一个C程序都由一个主函数和若干个被调用的其它函数组成.二、单项选择题B 1. 非线性结构是数据元素之间存在一种:A一对多关系 B多对多关系 C多对一关系 D一对一关系C 2. 数据结构中,与所使用的计算机无关的是数据的结构;A 存储B 物理C 逻辑D 物理和存储C 3. 算法分析的目的是:A 找出数据结构的合理性B 研究算法中的输入和输出的关系C 分析算法的效率以求改进D 分析算法的易懂性和文档性A 4. 算法分析的两个主要方面5是:A 空间复杂性和时间复杂性B 正确性和简明性C 可读性和文档性D 数据复杂性和程序复杂性C 5. 计算机算法指的是:A 计算方法B 排序方法C 解决问题的有限运算序列D 调度方法B 6. 计算机算法必须具备输入、输出和等5个特性.A 可行性、可移植性和可扩充性B 可行性、确定性和有穷性C 确定性、有穷性和稳定性D 易读性、稳定性和安全性三、简答题1.数据结构和数据类型两个概念之间有区别吗答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素.数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作.2. 简述线性结构与非线性结构的不同点.答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是多对多的. 四、分析下面各程序段的时间复杂度 五、设有数据逻辑结构S=D,R,试按各小题所给条件画出这些逻辑结构的图示,并确定其是哪种逻辑结构. 1. D={d1,d2,d3,d4} R={d1,d2,d2,d3,d3,d4 }线性表 2.D={d1,d2,…,d9}R={d1,d2,d1,d3,d3,d4,d3,d6,d6,d8,d4,d5, d6,d7,d8,d9 }树3.D={d1,d2,…,d9}R={d1,d3,d1,d8,d2,d3,d2,d4,d2,d5,d3,d9, d5,d6,d8,d9,d9,d7, d4,d7, d4,d6}有向图第二章 线性表一、选择题1、若长度为n 的线性表采用顺序存储结构,在其第i 个位置插入一个新元素算法的时间复杂度 .A. Olog 2n 1 C. On n 22、若一个线性表中最常用的操作是取第i 个元素和找第i 个元素的前趋元素,则采用 存储方式最节省时间.A. 顺序表B. 单链表C. 双链表D. 单循环链表3、具有线性结构的数据结构是 .A. 图B. 树C. 广义表D. 栈4、在一个长度为n 的顺序表中,在第i 个元素之前插入一个新元素时,需向后移动 个元素.A. n-iB. n-i+1C. n-i-1D. i5、非空的循环单链表head 的尾结点p 满足 .A. p->next==headB. p->next==NULLC. p==NULLD. p==head6、链表不具有的特点是 .A. 可随机访问任一元素B. 插入删除不需要移动元素C. 不必事先估计存储空间D. 所需空间与线性表长度成正比 2. s=0; for i=0; i<n; i++ forj=0; j<n; j++ s+=Bij; sum=s; 1. for i=0; i<n; i++ for j=0; j<m; j++ 3. x=0; fori=1; i<n; i++ for j=1; j<=n-i; j++ x++; 4. i=1; whilei<=n i=i3;7、在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是 .A. p->next=q;q->prior=p;p->next->prior=q;q->next=q;B. p->next=q;p->next->prior=q;q->prior=p;q->next=p->next;C. q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;D. q->next=p->next;q->prior=p;p->next=q;p->next=q;8、线性表采用链式存储时,结点的存储地址 .A. 必须是连续的B. 必须是不连续的C. 连续与否均可D. 和头结点的存储地址相连续9、在一个长度为n的顺序表中删除第i个元素,需要向前移动个元素.A. n-iB. n-i+1C. n-i-1D. i+110、线性表是n个的有限序列.A. 表元素B. 字符C. 数据元素D. 数据项11、从表中任一结点出发,都能扫描整个表的是 .A. 单链表B. 顺序表C. 循环链表D. 静态链表12、在具有n个结点的单链表上查找值为x的元素时,其时间复杂度为 .A. OnB. O1C. On2D. On-113、线性表L=a1,a2,……,an,下列说法正确的是 .A. 每个元素都有一个直接前驱和一个直接后继B. 线性表中至少要有一个元素C. 表中诸元素的排列顺序必须是由小到大或由大到小D. 除第一个和最后一个元素外,其余每个元素都由一个且仅有一个直接前驱和直接后继14、一个顺序表的第一个元素的存储地址是90,每个元素的长度为2,则第6个元素的存储地址是 .A. 98B. 100C. 102D. 10615、在线性表的下列存储结构中,读取元素花费的时间最少的是 .A. 单链表B. 双链表C. 循环链表D. 顺序表16、在一个单链表中,若删除p所指向结点的后续结点,则执行 .A. p->next=p->next->next;B. p=p->next;p->next=p->next->next;C. p =p->next;D. p=p->next->next;17、将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为 .A. O1B. OnC. OmD. Om+n18、线性表的顺序存储结构是一种存储结构.A. 随机存取B. 顺序存取C. 索引存取D. 散列存取19、顺序表中,插入一个元素所需移动的元素平均数是 .A. n-1/2B. nC. n+1D. n+1/210、循环链表的主要优点是 .A. 不再需要头指针B. 已知某结点位置后能容易找到其直接前驱C. 在进行插入、删除运算时能保证链表不断开D. 在表中任一结点出发都能扫描整个链表11、不带头结点的单链表head为空的判定条件是 .A. head==NULLB. head->next==NULLC. head->next==headD. head=NULL12、在下列对顺序表进行的操作中,算法时间复杂度为O1的是 .A. 访问第i个元素的前驱1<ni≤ B. 在第i个元素之后插入一个新元素≤1≤niC. 删除第i个元素n≤ D. 对顺序表中元素进行排序1≤i13、已知指针p和q分别指向某单链表中第一个结点和最后一个结点.假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为 .A. q->next=s->next;s->next=p;B. s->next=p;q->next=s->next;C. p->next=s->next;s->next=q;D. s->next=q;p->next=s->next;14、在以下的叙述中,正确的是 .A. 线性表的顺序存储结构优于链表存储结构B. 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C. 线性表的链表存储结构适用于频繁插入/删除数据元素的情况D. 线性表的链表存储结构优于顺序存储结构15、在表长为n的顺序表中,当在任何位置删除一个元素的概率相同时,删除一个元素所需移动的平均个数为 .A. n-1/2B. n/2C. n+1/2D. n16、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入一个结点s,则执行 .A. s->next=p->next; p->next=s;B. p->next=s->next;s->next=p;C. q->next=s;s->next=p;D. p->next=s;s->next=q;17、在单链表中,指针p指向元素为x的结点,实现删除x的后继的语句是 .A. p=p->next;B. p->next=p->next->next;C. p->next=p;D. p=p->next->next;18、在头指针为head且表长大于1的单循环链表中,指针p指向表中某个结点,若p->next->next==head,则 .A. p指向头结点B. p指向尾结点C. p的直接后继是头结点D. p的直接后继是尾结点二、填空题1、设单链表的结点结构为data,next.已知指针p指向单链表中的结点,q指向新结点,欲将q插入到p结点之后,则需要执行的语句: q-next=p-next,p-next=q .答案:q->next=p->next p->next=q2、线性表的逻辑结构是线性结构 ,其所含元素的个数称为线性表的长度 .答案:线性结构长度3、写出带头结点的双向循环链表L为空表的条件 L-prior=L-next=L .答案:L->prior==L->next==L4、带头结点的单链表head为空的条件是 head-next==null .答案:head->next==NULL5、在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q = p->next;p->next=_q-next ___;答案:q->next三、判断题1、单链表不是一种随机存储结构.2、在具有头结点的单链表中,头指针指向链表的第一个数据结点的存储位置.3、用循环单链表表示的链队列中,可以不设队头指针,仅在队尾设置队尾指针.4、顺序存储方式只能用于存储线性结构.5、在线性表的顺序存储结构中,逻辑上相邻的两个元素但是在物理位置上不一定是相邻的.6、链式存储的线性表可以随机存取.四、程序分析填空题1、函数GetElem实现返回单链表的第i个元素,请在空格处将算法补充完整.int GetElemLinkList L,int i,Elemtype e{LinkList p;int j;p=L->next;j=1;whilep&&j<i{p=p-next 1 ;++j;}ifp||j>i return ERROR;e= p-data 2 ;return OK;}答案:1p=p->next 2p->data2、函数实现单链表的插入算法,请在空格处将算法补充完整.int ListInsertLinkList L,int i,ElemType e{LNode p,s;int j;p=L;j=0;whilep=NULL&&j<i-1{p=p->next;j++;}ifp==NULL||j>i-1 return ERROR;s=LNode mallocsizeofLNode;s->data=e;1 s-next=p-next ;2 p-next=s ;return OK;}/ListInsert/答案:1s->next=p->next 2p->next=s3、函数ListDelete_sq实现顺序表删除算法,请在空格处将算法补充完整.int ListDelete_sqSqlist L,int i{int k;ifi<1||i>L->length return ERROR;fork=i-1;k<L->length-1;k++L->slistk= L->slistk+1 1 ;2 --L->Length ;return OK;}答案:1L->slistk+1 2 --L->Length4、函数实现单链表的删除算法,请在空格处将算法补充完整.int ListDeleteLinkList L,int i,ElemType s{LNode p,q;int j;p=L;j=0;while p-next=null 1 &&j<i-1{p=p->next;j++;}ifp->next==NULL||j>i-1 return ERROR;q=p->next;p-next=q-next 2 ;s=q->data;freeq;return OK;}/listDelete/答案:1p->next=NULL 2p->next=q->next5、写出算法的功能.int Lhead{node head;int n=0;node p;p=head;whilep=NULL{ p=p->next;n++;}returnn;}答案:求单链表head的长度五、综合题1、编写算法,实现带头结点单链表的逆置算法.答案:void inventLnode head{Lnode p,q;ifhead->next return ERROR;p=head->next; q=p->next; p->next =NULL;whileq{p=q; q=q->next; p->next=head->next; head->next=p;}}2、有两个循环链表,链头指针分别为L1和L2,要求写出算法将L2链表链到L1链表之后,且连接后仍保持循环链表形式.答案:void mergeLnode L1, Lnode L2{Lnode p,q ;whilep->next=L1p=p->next;whileq->next=L2q=q->next;q->next=L1; p->next =L2;}3、设一个带头结点的单向链表的头指针为head,设计算法,将链表的记录,按照data 域的值递增排序.答案:void assendingLnode head{Lnode p,q , r, s;p=head->next; q=p->next; p->next=NULL;whileq{r=q; q=q->next;ifr->data<=p->data{r->next=p; head->next=r; p=r; }else{whilep && r->data>p->data{s=p; p=p->next; }r->next=p; s->next=r;}p=head->next; }}4、编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度.答案:void linklist_cLnode head{Lnode p; p=head;ifp return ERROR;whilep->next=NULLp=p->next;p->next=head;}设单链表的长度数据结点数为N,则该算法的时间主要花费在查找链表最后一个结点上算法中的while循环,所以该算法的时间复杂度为ON.5、已知head为带头结点的单循环链表的头指针,链表中的数据元素依次为a1,a2,a3,a4,…,an,A为指向空的顺序表的指针.阅读以下程序段,并回答问题:1写出执行下列程序段后的顺序表A中的数据元素;2简要叙述该程序段的功能.ifhead->next=head{p=head->next;A->length=0;whilep->next=head{p=p->next;A->dataA->length ++=p->data;ifp->next=headp=p->next;}}答案:1 a2, a4, …, 2将循环单链表中偶数结点位置的元素值写入顺序表A6、设顺序表va中的数据元数递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性.答案:void Insert_sqSqlist va, ElemType x{int i, j, n;n=lengthva;ifx>=vaivan=x;else{i=0;whilex>vai i++;forj=n-1;j>=I;j--vaj+1=vaj;vai=x; }n++;}7、假设线性表采用顺序存储结构,表中元素值为整型.阅读算法f2,设顺序表L=3,7,3,2,1,1,8,7,3,写出执行算法f2后的线性表L的数据元素,并描述该算法的功能.void f2SeqList L{int i,j,k;k=0;fori=0;i<L->length;i++{forj=0;j<k && L->datai=L->dataj;j++;ifj==k{ifk=iL->datak=L->datai;k++;}}L->length=k;}答案:3,7,2,1,8 删除顺序表中重复的元素8、已知线性表中的元素以值递增有序排列,并以单链表作存储结构.试写一算法,删除表中所有大于x且小于y的元素若表中存在这样的元素同时释放被删除结点空间.答案:void Delete_listLnode head, ElemType x, ElemType y{Lnode p, q;ifhead return ERROR;p=head; q=p;whilep{ifp->data>x && p->data<y}i++;ifp==head{head=p->next; freep;p=head; q=p; }else{q->next=p->next; freep;p=q->next; }else{q=p; p=p->next; }}}9、在带头结点的循环链表L中,结点的数据元素为整型,且按值递增有序存放.给定两个整数a和b,且a<b,编写算法删除链表L中元素值大于a且小于b的所有结点.第三章栈和队列一、选择题1、一个栈的输入序列为:a,b,c,d,e,则栈的不可能输出的序列是 .A. a,b,c,d,eB. d,e,c,b,aC. d,c,e,a,bD. e,d,c,b,a2、判断一个循环队列Q最多n个元素为满的条件是 .A. Q->rear==Q->frontB. Q->rear==Q->front+1C. Q->front==Q->rear+1%nD. Q->front==Q->rear-1%n3、设计一个判别表达式中括号是否配对的算法,采用数据结构最佳.A. 顺序表B. 链表C. 队列D. 栈4、带头结点的单链表head为空的判定条件是 .A. head==NULLB. head->next==NULLC. head->next=NULLD. head=NULL5、一个栈的输入序列为:1,2,3,4,则栈的不可能输出的序列是 .A. 1243B. 2134C. 1432D. 4312E. 32146、若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0,3.当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为 .A. 1和5B. 2和4C. 4和2D. 5和17、队列的插入操作是在 .A. 队尾B. 队头C. 队列任意位置D. 队头元素后8、循环队列的队头和队尾指针分别为front和rear,则判断循环队列为空的条件是 .A. front==rearB. front==0C. rear==0D. front=rear+19、一个顺序栈S,其栈顶指针为top,则将元素e入栈的操作是 .A. S->top=e;S->top++;B. S->top++;S->top=e;C. S->top=eD. S->top=e;10、表达式ab+c-d的后缀表达式是 .A. abcd+-B. abc+d-C. abc+d-D. -+abcd11、将递归算法转换成对应的非递归算法时,通常需要使用来保存中间结果.A. 队列B. 栈C. 链表D. 树12、栈的插入和删除操作在 .A. 栈底B. 栈顶C. 任意位置D. 指定位置13、五节车厢以编号1,2,3,4,5顺序进入铁路调度站栈,可以得到的编组.A. 3,4,5,1,2B. 2,4,1,3,5C. 3,5,4,2,1D. 1,3,5,2,414、判定一个顺序栈S栈空间大小为n为空的条件是 .A. S->top==0B. S->top=0C. S->top==nD. S->top=n15、在一个链队列中,front和rear分别为头指针和尾指针,则插入一个结点s的操作为 .A. front=front->nextB. s->next=rear;rear=sC. rear->next=s;rear=s;D. s->next=front;front=s;16、一个队列的入队序列是1,2,3,4,则队列的出队序列是 .A. 1,2,3,4B. 4,3,2,1C. 1,4,3,2D. 3,4,1,217、依次在初始为空的队列中插入元素a,b,c,d以后,紧接着做了两次删除操作,此时的队头元素是 .A. aB. bC. cD. d18、正常情况下,删除非空的顺序存储结构的堆栈的栈顶元素,栈顶指针top的变化是 .A. top不变B. top=0C. top=top+1D. top=top-119、判断一个循环队列Q空间大小为M为空的条件是 .A. Q->front==Q->rearB. Q->rear-Q->front-1==MC. Q->front+1=Q->rearD. Q->rear+1=Q->front20、设计一个判别表达式中左右括号是否配对出现的算法,采用数据结构最佳.A. 线性表的顺序存储结构B. 队列C. 栈D. 线性表的链式存储结构21、当用大小为N的数组存储顺序循环队列时,该队列的最大长度为 .A. NB. N+1C. N-1D. N-222、队列的删除操作是在 .A. 队首B. 队尾C. 队前D. 队后23、若让元素1,2,3依次进栈,则出栈次序不可能是 .A. 3,2,1B. 2,1,3C. 3,1,2D. 1,3,224、循环队列用数组A0,m-1存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是 .A. rear-front+m%mB. rear-front+1C. rear-front-1D. rear-front25、在解决计算机主机和打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取走数据打印.该缓冲区应该是一个结构.A. 堆栈B. 队列C. 数组D. 线性表26、栈和队列都是 .A. 链式存储的线性结构B. 链式存储的非线性结构C. 限制存取点的线性结构D. 限制存取点的非线性结构27、在一个链队列中,假定front和rear分别为队头指针和队尾指针,删除一个结点的操作是 .A. front=front->nextB. rear= rear->nextC. rear->next=frontD. front->next=rear28、队和栈的主要区别是 .A. 逻辑结构不同B.存储结构不同C. 所包含的运算个数不同D. 限定插入和删除的位置不同二、填空题1、设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈的容量至少应该是 .答案:32、一个循环队列Q的存储空间大小为M,其队头和队尾指针分别为front和rear,则循环队列中元素的个数为: .答案:rear-front+M%M3、在具有n个元素的循环队列中,队满时具有个元素.答案:n-14、设循环队列的容量为70,现经过一系列的入队和出队操作后,front为20,rear为11,则队列中元素的个数为 .答案:615、已知循环队列的存储空间大小为20,且当前队列的头指针和尾指针的值分别为8和3,且该队列的当前的长度为_______.三、判断题1、栈和队列都是受限的线性结构.2、在单链表中,要访问某个结点,只要知道该结点的地址即可;因此,单链表是一种随机存取结构.3、以链表作为栈的存储结构,出栈操作必须判别栈空的情况.四、程序分析填空题1、已知栈的基本操作函数:int InitStackSqStack S; 连接 B. 求子串C. 模式匹配D. 判断子串2、已知串S=’aaab’,则next数组值为 A .A. 0123B. 1123C. 1231D. 12113、串与普通的线性表相比较,它的特殊性体现在 C .A. 顺序的存储结构B. 链式存储结构C. 数据元素是一个字符D. 数据元素任意4、设串长为n,模式串长为m,则KMP算法所需的附加空间为 A .mA. OmB. OnC. OmnD. Onlog25、空串和空格串 B .A. 相同B. 不相同C. 可能相同D. 无法确定6、与线性表相比,串的插入和删除操作的特点是 .A. 通常以串整体作为操作对象B. 需要更多的辅助空间C. 算法的时间复杂度较高D. 涉及移动的元素更多7、设SUBSTRS,i,k是求S中从第i个字符开始的连续k个字符组成的子串的操作,则对于S=’Beijing&Nanjing’,SUBSTRS,4,5= B .A. ‘ijing’B. ‘jing&’C.‘ingNa’D. ‘ing&N’二、判断题1、造成简单模式匹配算法BF算法执行效率低的原因是有回溯存在.√ 2、KMP算法的最大特点是指示主串的指针不需要回溯.√ 3、完全二叉树某结点有右子树,则必然有左子树.三、填空题1、求子串在主串中首次出现的位置的运算称为模式匹配 .2、设s=’I︺AM︺A︺TEACHER’,其长度是____.3、两个串相等的充分必要条件是两个串的长度相等且对应位置字符相同 .四、程序填空题1、函数kmp实现串的模式匹配,请在空格处将算法补充完整.int kmpsqstring s,sqstring t,int start,int next{int i=start-1,j=0;whilei<s->len&&j<t->lenifj==-1||s->datai==t->dataj{i++;j++;}else j= ;ifj>=t->lenreturn ;elsereturn-1;}2、函数实现串的模式匹配算法,请在空格处将算法补充完整.int index_bfsqstrings,sqstring t,int start{int i=start-1,j=0;whilei<s->len&&j<t->lenifs->datai==t->dataj{i++;j++;}else{i= i-j+1 ;j=0;}ifj>=t->lenreturn i-t->len+1 ;elsereturn -1;}}/listDelete/3、写出下面算法的功能.int functionSqString s1,SqString s2{int i;fori=0;i<s1->length&&i<s1->length;i++ifs->datai=s2->dataireturn s1->datai-s2->datai;return s1->length-s2->length;}答案:.串比较算法4、写出算法的功能.int funsqstring s,sqstring t,int start{int i=start-1,j=0;whilei<s->len&&j<t->lenifs->datai==t->dataj{i++;j++;}else{i=i-j+1;j=0;}ifj>=t->lenreturn i-t->len+1;elsereturn -1;}答案:串的模式匹配算法第五章数组和广义表一、选择题1、设广义表L=a,b,c,则L的长度和深度分别为 C .A. 1和1B. 1和3C. 1和2D. 2和32、广义表a,a的表尾是 B .A. aB. aC.D. a3、稀疏矩阵的常见压缩存储方法有 C 两种.A. 二维数组和三维数组B. 三元组和散列表C. 三元组和十字链表D. 散列表和十字链表4、一个非空广义表的表头 D .A. 不可能是子表B. 只能是子表C. 只能是原子D. 可以是子表或原子5、数组A0..5,0..6的每个元素占5个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A55的地址是 A .A. 1175B. 1180C. 1205D. 12106、广义表G=a,bc,d,e,f,g的长度是 A .A. 3B. 4C. 7D. 87、采用稀疏矩阵的三元组表形式进行压缩存储,若要完成对三元组表进行转置,只要将行和列对换,这种说法 B .A. 正确B. 错误C. 无法确定D. 以上均不对8、广义表a,b,c的表尾是 B .A. b,cB. b,cC. cD. c9、常对数组进行两种基本操作是 C .A. 建立和删除B. 索引和修改C. 查找和修改D. 查找与索引10、对一些特殊矩阵采用压缩存储的目的主要是为了 D .A. 表达变得简单B.对矩阵元素的存取变得简单C. 去掉矩阵中的多余元素D. 减少不必要的存储空间的开销11、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为 .A. 13B. 33C. 18D. 4012、设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分按行序存放在一维数组B1,nn-1/2中,对下三角部分中任一元素ai,ji>=j,在一维数组B 的下标位置k 的值是 B .A. ii-1/2+j-1B. ii-1/2+jC. ii+1/2+j-1D. ii+1/2+j13、广义表A=a,a 的表头是 B .A. aB. aC. bD. a14、稀疏矩阵一般的压缩存储方法有两种,即 C .A. 二维数组和三维数组B. 三元组和散列C. 三元组和十字链表D. 散列和十字链表15、假设以三元组表表示稀疏矩阵,则与如图所示三元组表对应的4×5的稀疏矩阵是注:矩阵的行列下标均从1开始 B .A. ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--00405000000000706080 B. ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--00000004053000706080 C. ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--00405000073000006080D. ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--00000304050000706080 16、以下有关广义表的表述中,正确的是 A .A. 由0个或多个原子或子表构成的有限序列B. 至少有一个元素是子表C. 不能递归定义D. 不能为空表17、对广义表L=a,b,c,d,e,f 执行headtailheadtailL 操作的结果是 .A. 的B. eC. eD. e,f二、判断题1、广义表中原子个数即为广义表的长度.2、一个稀疏矩阵采用三元组表示,若把三元组中有关行下标与列下标的值互换,并把mu 和nu 的值进行互换,则完成了矩阵转置.√ 3、稀疏矩阵压缩存储后,必会失去随机存取功能.4、广义表的长度是指广义表中括号嵌套的层数.√ 5、广义表是一种多层次的数据结构,其元素可以是单原子也可以是子表.三、填空题1、已知二维数组Amn 采用行序为主方式存储,每个元素占k 个存储单元,并且第一个元素的存储地址是LOCA00,则Aij 的地址是___ LocA00+iN+jk ____.2、广义表运算式HEADTAILa,b,c,x,y,z 的结果是: x,y,z .3、二维数组,可以按照 两种不同的存储方式.。
数据结构基本概念练习题(答案)
数据结构基本概念练习题一、不定项选择和填空题1、数据结构是一门研究非数值计算的程序设计问题中计算机的(①A)以及它们之间的(B②)和运算的学科①A、操作对象B、计算方法C、逻辑存储D、数据映象②A、结构B、关系C、运算D、算法2、数据结构被形式地定义为(K,R),其中K是(①B)的有限集合,R是K上(②D)的有限集合①A、算法B、数据元素C、数据操作D、逻辑结韵②A、操作B、映象C、存储D、关系3、在数据结构中,从逻辑上可以把数据结构分为(C)A、动态结构和静态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构4、线性表的顺序存储结构是一种(B)的存储结构,线性表的链式存储结构是一种(A)的存储结构A、随机存取B、顺序存取C、索引存取D、HASH存取5、算法分析的目的是(C①),算法分析的两个主要方面是(②A)①A、找出数据结构的合理性B、研究算法中的输入和输出的关系C、分析算法的效率以求改进D、分析算法的易懂性和文档性②A、空间复杂性和时间复杂性B、正确性和简明性C、可读性和文档性D、数据复杂性和程序复杂性6、计算机算法指的是(①C),它必具备输入、输出和(C②)等五个特性①A、计算方法B、排序方法C、解决问题的有限运算序列D、调度方法②A、可执行性、可移植性和可扩充性B、可执行性、确定性和有穷性C、确定性、有穷性和稳定性D、易谩性、稳定性和安全性7、线性表的逻辑顺序与存储顺序总是一致的,这种说法(B)A、正确B、不正确8、线性表若采用链表存储结构时,要求内存中可用存储单元的地址(D)A、必须是连续的B、部分地址必须是连续的C、一定是不连续的D、连续不连续都可以9、在以下的叙述中,正确的是(B)A、线性表的线性存储结构优于链表存储结构B、二维数组是它的每个数据元素为一个线性表的线性表C、栈的操作方式是先进先出D、队列的操作方式是先进后出10、每种数据结构都具备三个基本运算:插入、删除和查找,这种说法(A)A、正确B、不正确pascal编程基础练习题一、不定项选择和填空题1、下列关于程序语言的叙述,不正确的是(CD)A、编写机器代码不比编写汇编代码容易B、高级语言需要编译成目标代码或通过解释器解释后才能被CPU执行C、同样一段高级语言程序通过不同的编译器可能产生不同的可执行程序D、汇编代码可被CPU直接运行E、不同的高级语言语法略有不同2、下列哪一种程序设计语言是解释执行的(BD)A、Pascal B、GWBASIC C、C++ D、FORTRAN3、解释程序的功能是(C)A、将高级语言程序转换为目标程序B、将汇编语言程序转换为目标程序C、解释执行高级语言程序D、解释执行汇编语言程序4、下列中没有语法错误的PASCAL程序首部是(A)A、PROGRAM A1;B、PROGRAM A1(0utPut)C、PROGRAM (Input,OutPut);D、PROGRAM A1(Input OutPut);5、结构化程序的结构由三种基本结构组成,下面哪个不属于这三种基本结构(B)A、顺序结构B、输入输出结构C、分支结构D、循环结构6、Pascal程序必须包括(C)A、程序首部、说明部分、语句部分B、程序首部、说明部分C、说明部分、语句部分D、程序首部、语句部分7、标准Pascal程序说明部分的正确顺序是(C)A、LABEL—CONST—VAR—TYPE B、VAR—CONST—LABEL—TYPEC、LABEL—CONST—TYPE—VAR D、CONST—VAR—TYPE—LABEL8、下面对Pascal程序组成结构的描述错误的是(B)A、程序体可以为空B、程序的注释部分只能写在程序中一条语句的最后C、程序首都的参数部分可有可无D、一个完整的PASCAL程序的主程序只能有一个9、要编写并执行—个PASCAL程序,—般的步骤是(A)A、①用编辑软件编写源程序②用PASCAL的编译程序把源程序转换成目标程序③用连接程序把目标程序转换为可执行程序④运行可执行程序B、①用编辑软件编写源程序②修改和调试源程序③用PASCAL的编译程序把源程序转换成可执行程序④运行可执行程序C、①用编辑软件编写源程序②用连接程序把源程序转换成可执行程序③试运行可执行程序④修改后再运行可执行程序D、①用编辑软件编写源程序②用连接程序把源程序转换为目标程序③用PASCAL的编译程序把目标程序转换为可执行程序④运行可执行程序10、PASCAL源程序中不正确的注释语句是(B)A、用一对“{”和“}”括起来的字符串B、用一对“/*”和“*/”括起来的字符串C、用—对“(*”和“*)”括起来的字符串D、A) 或 B)11、以下正确的PASCAL实数是(BF)A、0.56E2.5 B、2.56E2 C、.318E1 D、34.E5E、E5 F、3E-5 G、.15 H、15.12、每个Pascal程序的分程序中都必须包括(B)A、变量说明、语句B、语句C、类型定义、变量说明、语句D、常量说明、变量说明、语句13、下列中合法的Pascal标识符是(EH)A、Char set B、RECORD C、Abs D、πE、A1B2C3F、FOR G、2ab H、a[1]14、设a、b、c为整型变量,并有以下程序段Read(a);Readln(b,c);Readln(c,b);Readln(a,b);writeln(a,b,c)若运行时输入:1 2 3<ENTER>4 5 6<ENTER>7 8 9<ENTER>其中<ENTER>表示回车符,则输出是(C)A、123 B、147 C、78415、下列表达式中,其值为TRUE的是(ADEFG)A、150>=150 B、100>150 C、Abs(-200)<>200 D、Succ('A')<Succ('a') E、'ab'<'abc' F、Succ(False)=True G、Odd(35+1)=FaLse H、219<>21916、有变量说明:VAR i1,i2:Integer;r1,r2:Real;b1,b2:Boolean;设各变量均已赋值,下列中错误的赋值语句是(ABDF)A、b2:=Ord(r1>r2) B、i2:=i1+r1 C、b1:=i1=i2 D、b1:=b1+b2E、i2:=i1+i2 DIV i1 F、i1:=i1/i2 G、r2:=3/5*Sqr(r1+r2) H、r1:=r2+r117、下面一段程序是用(C))语言书写的int funcl (int n){int i,sum=0;for (i = 1;i<=n;i++)sum+= i*i;return sum;}A、FORTRAN B、PASCAL C、C D、PROLOG E、BASIC18、设全集E={1,2,3,4,5},集合A={1,4},B={l,2, 5},C={2,4),则集合(A∩B)∪~C为(E)A、空集B、{1} C、{3,5} D、{1,5} E、{1,3,5}19、运算17 MOD 4的结果是(C)A、7 B、3 C、1 D、420、已知a、b、c、d、e、f、g均为整数变量,其值分别为2、4、6、8、10、12、14,若输出结果为2 46 8 1012 14则输出语句应是(D)A、Write(a:3,b:3);write(c:3,d:3,e:3);Write(f:3,g:3)B、Writeln(a:3,b:3);Write(c:3,d:3,e:3);Writeln(f:3,g:3)C、Writeln(a:3,b:3);Writeln(c:3,d:3,e:3);Writeln;Writeln(f:3,g:3);D、Write(a:3,b:3);Writeln;Write(c:3);Writeln(d:3,e:3);Write(f:3,g:3)21、把整数7转换为字符‘7’的表达式是哪一个(C)A、Chr(7)-0rd('0') B、Chr(7-0rd(0)) C、Chr(7+0rd('0')) D、Chr(7+0rd(0))22、下列类型定义中,合法的是(AB)A、TYPE a=10..10;B、TYPE b=0..Sqr(10);C、TYPE c=1.0..10.0;D、TYPE d=10..5;23、以下运算符中运算优先级最高的是(D)A、+B、OR C、>= D、DIV24、已知有如下说明:VARa,b:Integer;c,d:Real;下面赋值语句合法的是(AD)A、c:=a+b B、a:=Trunc(c) C、a:=a+b/c D、b:=a div d25、设有变量说明:VAR s:(C,G,A,J,K);则函数Succ(A)的取值是(C)A、G B、3 C、J D、B26、表达式True AND NOT Odd(-202)<(7-3<=4)的值是(B)A、True B、False C、0 D、127、下列常量说明中合法的是(D)A、CONST color=red..blue; B、CONST CONST=10*5;C、CONST x1:=3.9; D、CONST abc='abc';28、已知a、b、c、d是同类型简单变量,且都已有互不相同的值,执行下列语句b:=a; a:=c; d:=C; d:=A;后,其值相等的变量是(AD)A、a,d B、a,c C、c,b D、b,d29、下面合法的常量是(C)A、.25 B、"RED" C、'%' D、3E-2.530、设a、b、c、d、e均为整型变量,且a=13、b=2、c=10、d=3、e=2,则表达式a-b*c DIV d MOD e的值是:(A)A、13 B、-7 C、11 D、0。
数据结构试题及答案
数据结构试题及答案试题1.请说明数据结构的定义和作用。
2.请列举数据结构的分类,并简要描述每种分类的特点。
3.请解释什么是线性数据结构,并举例说明。
4.请解释什么是非线性数据结构,并举例说明。
5.请简述栈和队列的特点,并提供实际应用场景。
6.请说明二叉树的定义,并解释二叉树的遍历方式。
7.请解释什么是图数据结构,并提供图的应用场景。
8.请解释什么是散列表,并解释散列表的应用场景。
9.请说明堆数据结构的定义和特点。
10.请解释什么是哈希表,并提供哈希表的应用场景。
答案1.数据结构的定义和作用数据结构是一种组织和存储数据的方式,它定义了数据之间的关系和操作。
数据结构的作用是为了有效地管理和处理大量数据,并提高程序的执行效率和内存利用率。
2.数据结构的分类及特点–线性数据结构:线性数据结构是数据元素之间存在一对一的关系,数据元素之间只能以线性的方式连接。
例如:数组、链表、栈、队列等。
线性数据结构的特点是:数据元素之间具有顺序关系,可以实现快速的查找和插入,但插入和删除操作可能导致大量元素的移动。
–非线性数据结构:非线性数据结构是数据元素之间存在一对多或多对多的关系,数据元素之间可以以任意非线性连接方式组织。
例如:树、图等。
非线性数据结构的特点是:数据元素之间不存在固定的顺序关系,可以更灵活地表示数据之间的关系,但查找和插入的效率可能较低。
3.线性数据结构的例子线性数据结构的一个例子是数组。
数组是一种连续存储数据的结构,每个元素占据相同的大小。
数组的元素通过索引访问,索引从0开始。
例如,一个整型数组可以表示一组整数,可以通过索引快速访问和修改数组中的元素。
4.非线性数据结构的例子非线性数据结构的一个例子是树。
树是一种分层存储数据的结构,包含一个根节点和若干个子节点。
每个节点可以有多个子节点,但只能有一个父节点。
例如,二叉树是一种特殊的树,每个节点最多有两个子节点。
5.栈和队列的特点及应用场景–栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。
数据结构试题及答案(十套)
数据结构试题及答案(十套)数据结构试题及答案(十套)一、选择题1. 数据结构是指()。
A. 存储数据的方式B. 数据的逻辑结构和物理结构C. 数据的存储结构和存储方式D. 数据的逻辑结构、存储结构和存储方式答案:D2. 在数据结构中,线性表的存储方式包括()。
A. 顺序存储和链式存储B. 数组存储和链表存储C. 顺序存储、链表存储和索引存储D. 顺序存储、链表存储和树形存储答案:A3. 栈是一种()的数据结构。
A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:C4. 队列是一种()的数据结构。
A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:A5. 二叉树中,度为0的节点称为()。
A. 叶子节点B. 根节点C. 中间节点D. 子节点答案:A6. 以下哪个排序算法是稳定的?A. 快速排序B. 选择排序C. 插入排序D. 希尔排序答案:C7. 图中表示顶点之间关系的边的数量称为()。
A. 顶点度数B. 边数C. 路径数D. 网络答案:B8. 哈希表通过()来实现高效的查找操作。
A. 散列函数B. 排序算法C. 遍历操作D. 顺序存储答案:A9. 平衡二叉树是一种具有左右子树高度差不超过()的二叉树。
A. 0B. 1C. 2D. 3答案:B10. 在链表中,删除节点的操作时间复杂度是()。
A. O(1)B. O(logn)C. O(n)D. O(nlogn)答案:A二、填空题1. 在顺序存储结构中,元素之间的逻辑关系由()表示。
答案:下标2. 二叉查找树的中序遍历结果是一个()序列。
答案:递增3. 哈希表通过散列函数将关键字映射到()上。
答案:地址4. 图的邻接表中,每个顶点的所有邻接点链接成一个()。
答案:链表5. 位运算符中的左移和右移运算都是对二进制数进行()操作。
答案:移位三、解答题1. 简要介绍顺序存储和链式存储这两种线性表的存储方式,并比较它们的优缺点。
答案:顺序存储是将元素按照逻辑顺序依次存储在一块连续的存储空间中,通过元素的下标可以直接访问到元素。
1-数据结构基本概念(带答案)
1-数据结构基本概念(带答案)数据结构练习题1. 下列关于数据的逻辑结构的叙述中,__________是不正确的。
A. 数据的逻辑结构是数据间关系的描述B.数据的逻辑结构不仅反映数据间的逻辑关系,而且反映其在计算机中的存储方式C.数据的逻辑结构分为线性结构和非线性结构D.树形结构是典型的非线性结构答案B2. 在文件系统中,文件的逻辑块与存储介质上物理块存放顺序一致的物理结构是___________。
A. 顺序结构B. 链接结构C. 索引结构D. B树结构答案是A3. 下列关于数据结构基本概念的叙述中,正确的是___________。
A. 数据的逻辑结构分为表结构和树结构B. 数据的存储结构分为线性结构和非线性结构C. 数据元素是数据的基本单位D. 结点是有独立意义的数据最小单位标准答案是C4. 下列关于数据元素的叙述中,不正确的是____________。
A. 数据元素是数据的基本单位,即数据集合中的个体B. 数据元素是有独立含义的数据最小单位C. 数据元素又称作结点D. 数据元素又称为记录标准答案是B。
5. 下列__________不是文件的物理结构。
A. 顺序结构B. Hash结构C. 索引结构D. 流式结构标准答案为D。
6. 下列关于数据的存储结构的叙述中,正确的是__________。
A.数据的存储结构是数据间关系的抽象描述B.数据的存储结构是逻辑结构在计算机存储器中的实现C.数据的存储结构分为线性结构和非线性结构D.数据的存储结构对数据运算的具体实现没有影响标准答案是B。
7. 下列___________是数据结构研究的内容。
Ⅰ数据的采集Ⅱ数据的逻辑结构Ⅲ数据的存储实现Ⅳ数据的传输Ⅴ数据的检索A. Ⅱ和ⅣB. Ⅰ、Ⅱ和ⅢC. Ⅱ、Ⅲ和ⅤD. Ⅰ、Ⅲ和Ⅴ标准答案是C8. 下列关于数据结构基本概念的叙述中,________是不正确的。
A. 数据是采用计算机能够识别、存储和处理的方式,对现实世界的事物进行的描述B. 数据元素(或称结点、记录等)是数据的基本单位C. 一个数据元素至少由两个数据项组成D. 数据项是有独立含义的数据最小单位一个数据元素可由一个或多个数据项组成,所以选项C是错误的。
十套数据结构试题及答案
数据构造试卷〔一〕一、单项选择题〔每题 2 分,共20分〕1.栈和队列的共同特点是( a )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进展插入运算时( d ).A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.以下数据构造中哪一个是非线性构造?( d )A. 队列B. 栈C. 线性表D. 二叉树4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
cA.688 B.678 C.692 D.6965.树最适合用来表示( c )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6.二叉树的第k层的结点数最多为( d ).A.2k-1 B.2K+1 C.2K-1 D. 2k-17.假设有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进展二分查找,那么查找A[3]的比拟序列的下标依次为( c d)A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对n个记录的文件进展快速排序,所需要的辅助存储空间大致为 cA. O〔1〕B. O〔n〕C. O〔1og2n〕D. O〔n2〕9.对于线性表〔7,34,55,25,64,46,20,10〕进展散列存储时,假设选用H〔K〕=K %9作为散列函数,那么散列地址为1的元素有〔 c d〕个,A.1 B.2 C.3 D.410.设有6个结点的无向图,该图至少应有( a )条边才能确保是一个连通图。
二、填空题〔每空1分,共26分〕1.通常从四个方面评价算法的质量:____时间正确性_____、____占用内存_易读性____、____复杂度__强壮性___和_____准确度_ 高效率___。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构试题一、单选题1、在数据结构的讨论中把数据结构从逻辑上分为(C )A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构。
2、采用线性链表表示一个向量时,要求占用的存储空间地址(D )A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。
A nB n/2C (n-1)/2D (n+1)/24、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。
A s→link = p→link; p→link = s;B p→link = s; s→link = q;C p→link = s→link; s→link = p;D q→link = s; s→link = p;5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。
A 起泡排序B 堆排序C 锦标赛排序D 快速排序6、设有两个串t和p,求p在t中首次出现的位置的运算叫做( B )。
A 求子串B 模式匹配C 串替换D 串连接7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j 从1到10。
所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是( C )。
A 80B 100C 240D 2708、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。
A 栈B 队列C 循环队列D 优先队列9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( C )。
10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。
A ( front - rear + 1) % mB ( rear - front + 1) % mC ( front - rear + m) % mD ( rear - front + m) % m11、一个数组元素a[i]与( A )的表示等价。
A *(a+i)B a+iC *a+iD &a+i12、若需要利用形参直接访问实参,则应把形参变量说明为( B )参数。
A 指针B 引用C 值D 变量13、下面程序段的时间复杂度为( C )for (int i=0;i<m;i++)for (int j=0;j<n;j++)a[i][j]=i*j;A O(m2)B O(n2)C O(m*n)D O(m+n)14、下面程序段的时间复杂度为( B )int f(unsigned int n) {if(n= =0 || n= =1) return 1;else return n*f(n-1);}A O(1)B O(n)C O(n2)D O(n!)15、线性表若是采用链式存储结构时,要求内存中可用存储单元的地址( D )。
A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 连续或不连续都可以16、数据结构的定义为(D,S),其中D是( B )的集合。
A 算法 B数据元素 C 数据操作 D 逻辑结构17、算法分析的目的是( A )。
A找出数据结构的合理性B研究算法中输入和输出的关系C分析算法的效率以求改进D分析算法的易懂性和文档性18、在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行( B )。
A s->link=p;p->link=s;B s->link=p->link;p->link=s;C s->link=p->link;p=s;D p->link=s;s->link=p;19、设单链表中结点结构为(data,link).已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作( B )A s->link=p->link; p->link=s;B q->link=s; s->link=pC p->link=s->link; s->link=p;D p->link=s; s->link=q;20、设单链表中结点结构为(data,link).若想摘除结点*p的直接后继,则应执行下列哪一个操作( A )A p->link=p->link->link;B p=p->link; p->link=p->link->link;C p->link=p->link;D p=p->link->link;21、设单循环链表中结点的结构为(data,link),且rear是指向非空的带表头结点的单循环链表的尾结点的指针。
若想删除链表第一个结点,则应执行下列哪一个操作( D )A s=rear; rear=rear->link; delete s;B rear=rear->link; delete rear;C rear=rear->link->link; delete rear;D s=rear->link->link; rear->link->link=s->link; delete s;22、设单循环链表中结点的结构为(data,link),且first为指向链表表头的指针,current 为链表当前指针,在循环链表中检测current是否达到链表表尾的语句是( D )。
A current->link =nullB first->link=currentC first=currentD current->link=first23、一个栈的入栈序列为a,b,c,则出栈序列不可能的是( C )。
A c,b,aB b,a,cC c,a,bD a,c,b24、栈的数组表示中,top为栈顶指针,栈空的条件是( A )。
A top=0B top=maxSizeC top=maxSizeD top=-125、栈和队列的共同特点是( C )。
A 都是先进后出B 都是先进先出C只允许在端点处插入和删除 D 没有共同点26、假定一个顺序存储的循环队列的队头和队尾指针分别为f和r ,则判断队空的条件为( D ).A f+1= =rB r+1= =fC f= =0D f= =r27、当利用大小为n 的数组顺序存储一个队列时,该队列的最大长度为( B )A n-2B n-1C nD n+128、当利用大小为n 的数组顺序存储一个栈时,假定用top= =n 表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。
A top++;B top--;C top=0;D top;29、设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。
若想摘除链式栈的栈顶结点,并将被摘除结点的值保存到x中,则应执行下列( A )操作。
A x=top->data; top=top->link;B top=top->link; x=top->data;C x=top; top=top->link;D x=top->data;30、设循环队列的结构是:const int Maxsize=100;typedef int Data Type;typedef struct {Data Type data[Maxsize];Int front, rear;} Queue;若有一个Queue类型的队列Q,试问判断队列满的条件应是下列哪一个语句( D )A Q.front= = Q.rear;B Q.front - Q.rear= = Maxsize;C Q.front + Q.rear= = Maxsize;D Q.front= = (Q.rear+1)% Maxsize;31、设有一个递归算法如下:int fact (int n ){ if (n<=0) return 1;else return n*fact(n-1);}下面正确的叙述是( B )A 计算fact(n) 需要执行n次递归B fact(7)=5040C 此递归算法最多只能计算到fact(8)D 以上结论都不对32、设有一个递归算法如下int x (int n) {if (n<=3) return 1;else return x(n-2)+x(n-4)+1;}试问计算 x(x(8))时需要计算( D )次x函数。
A 8 次B 9 次C 16 次D 18次33、设有广义表D(a,b,D),其长度为( B ),深度为( A )A ∞B 3C 2D 534、广义表A(a),则表尾为( C )A aB (( ) )C 空表D (a)35、下列广义表是线性表的有( C )A E(a,(b,c))B E(a,E)C E (a,b)D E(a,L( ) )36、递归表、再入表、纯表、线性表之间的关系为( C )A 再入表>递归表>纯表>线性表B 递归表>线性表>再入表>纯表C 递归表>再入表>纯表>线性表 D递归表>再入表>线性表>纯表37、某二叉树的前序和后序序列正好相反,则该二叉树一定是( B )的二叉树。
A 空或只有一个结点B 高度等于其结点数C 任一结点无左孩子D 任一结点无右孩子38、对于任何一棵二叉树T,如果其终端结点数为n0,度为2的结点为n2.,则( A )A n0= n2+1B n2= n0+1C n0= 2n2+1D n2=2n0+139、由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为(B )A 24B 73C 48D 5340、已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址为da1,则第I 个结点的地址为( A )。
A da1+(I-1)*mB da1+I*mC da1-I*mD da1+(I+1)*m41、34 具有35个结点的完全二叉树的深度为( A )A 5B 6C 7D 842、对线性表进行折半搜索时,要求线性表必须( C )A 以链接方式存储且结点按关键码有序排列B 以数组方式存储C 以数组方式存储且结点按关键码有序排列 D以链接方式存储43、顺序搜索算法适合于存储结构为( B )的线性表。
A 散列存储B 顺序存储或链接存储C 压缩存储D 索引存储44、采用折半搜索算法搜索长度为n的有序表时,元素的平均搜索长度为( C )A O(n2)B O(n log2n)C O(log2n)D O(n)45、对于一个具有n个顶点和e条边的无向图,进行拓扑排序时,总的时间为( A )A nB n+1C n-1D n+e46、判断一个有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用(C )。