数据结构(第1,2章)自测题
- 格式:doc
- 大小:54.00 KB
- 文档页数:4
数据结构自测题及答案**数据结构自测题及答案**一、选择题(每题2分,共10分)1. 数据结构是一种用于组织和管理数据的方式,它主要关注的是:A. 数据的存储和表示方式B. 数据的输入和输出方式C. 算法和数据的交互方式D. 数据处理的速度和效率2. 在数据结构中,数组是一种:A. 线性结构B. 树形结构C. 图形结构D. 集合结构3. 下列哪种数据结构是先进先出(FIFO)的:A. 栈B. 队列C. 链表D. 哈希表4. 在二叉树中,每个节点最多有几个子节点:A. 0B. 1C. 2D. 35. 下列哪种数据结构适合用于实现图的存储:A. 数组B. 链表C. 堆D. 散列表二、填空题(每题2分,共10分)1. 在栈中,最后一个进入栈的元素最先出栈,这种特点叫做**后进先出**。
2. 哈希表一般是通过**散列函数**将键映射到存储位置上。
3. 图中节点之间的关系可以用**边**来表示。
4. 在二叉搜索树中,左子树的值都小于根节点的值,右子树的值都大于根节点的值,这种特点叫做**二叉搜索树的性质**。
5. 在链表中,每个节点都包含一个指向下一个节点的**指针**。
三、判断题(每题2分,共10分)1. 队列是一种先进先出(FIFO)的数据结构。
(正确)2. 图是一种非线性的数据结构。
(正确)3. 二叉树是一种树形数据结构,每个节点最多有两个子节点。
(正确)4. 栈可以用数组和链表两种方式实现。
(正确)5. 哈希表的插入和查询操作的时间复杂度都为O(1)。
(错误)四、程序设计题(总分20分)请编写一个程序,实现以下功能:1. 定义一个结构体,用于表示学生信息,包含姓名、年龄和成绩三个字段。
2. 动态创建一个长度为5的数组,用于存储学生信息。
3. 通过键盘输入,依次为每个学生的姓名、年龄和成绩赋值,并存储到数组中。
4. 分别计算学生的平均年龄和平均成绩,并输出结果。
代码示例(C语言):```c#include<stdio.h>#include<stdlib.h>struct Student {char name[20];int age;float score;};int main() {struct Student* students = (struct Student*)malloc(5 * sizeof(struct Student));for (int i = 0; i < 5; i++) {printf("请输入第 %d 个学生的姓名:", i + 1);scanf("%s", students[i].name);printf("请输入第 %d 个学生的年龄:", i + 1);scanf("%d", &students[i].age);printf("请输入第 %d 个学生的成绩:", i + 1);scanf("%f", &students[i].score);printf("\n");}int totalAge = 0;float totalScore = 0.0;for (int i = 0; i < 5; i++) {totalAge += students[i].age;totalScore += students[i].score;}float avgAge = totalAge / 5.0;float avgScore = totalScore / 5.0;printf("平均年龄: %.2f\n", avgAge);printf("平均成绩: %.2f\n", avgScore);free(students);return 0;}```以上就是自测题及答案的全部内容。
第1章绪论二、填空题1. 4种基本结构是:集合、线性结构、树形结构、图状结构。
2. 树形结构中元素的关系是一对多,图形结构中元素的关系是多对多。
3. 顺序存储结构中数据元素的存储位置与其逻辑顺序是对应的。
4. 算法效率的度量方法有:事后统计方法和事前分析估算方法。
5. 好算法应达到的目标:正确性、可读性、健壮性、执行时间短、存储量低。
6. 抽象数据类型可细分为3种:原子类型、固定聚合类型和可变聚合类型。
7. 抽象数据类型的定义包括:数据对象的定义、数据关系的定义、基本操作的定义。
三、判断题五、应用题1. 按增长率从小到大的顺序排列下列各函数:(2/3)n ,nlog,n ,n2 ,n!22. 写出以下各函数的功能,并求出其时间复杂度。
(1) 功能是判断n是否为素数,时间复杂度为O(√n ) 。
(2) 功能是计算1!+2!+…+n! ,时间复杂度为O(n ) 。
(3) 功能是计算1!+2!+…+n! ,时间复杂度为O(n2 ) 。
六、算法题1. 编写算法计算1!+2!+…+n!,并使算法的时间复杂度为O(n)。
算法思想:用循环实现阶乘的累加求和,注意在求n!时,使用前一次循环中已经求出的(n-1)!的结果。
double factorial(int n){ int i;double p=1, sum=0;for( i=1; i<=n; i++){ p=p*i;sum=sum+p;}return(sum);}2. 编写算法计算2i (i=0,1,2,…,n),并将计算结果存入数组a中,设计算机中允许的最大整数值为MAXINT,则当2k >MAXINT(0≤k≤n)时,应进行出错处理。
算法思想:先判断n的取值是否合法,若非法则直接退出程序,若n 合法则继续计算2i,在计算2i时,需要判断2i的值是否大于MAXINT/2,这个条件其实就是判断2i+1的值是否大于MAXINT#define arrsize 100#define MAXINT 65535void calculate(int a[ ], int n){ int i;if(n<=0 || n>arrsize){ printf("n error!\n");exit(-1);}a[0]=1;printf("a[0]=%d\n", a[0]);for(i=1; i<n; i++){ a[i]=a[i-1]*2;printf("a[%d]=%d\n", i, a[i]);if( a[i]>MAXINT/2 ){ printf(“i=%d, ERROR!\n”, i+1);break;}}}第2章线性结构一、选择题二、填空题1. 需向后移动__n-i+1____个元素。
《数据结构》第1-2章练习题一、选择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、若线性表最常用的操作是存取第i个元素及其前驱的值,则采用()存储方式节省时间A、单链表B、双向链表C、单循环链表D、顺序表顺序表可以随机存取8、设指针P指向双链表的某一结点,则双链表结构的对称性可用()式来刻画A、p->prior->next->==p->next->nextB、p->prior->prior->==p->next->priorC、p->prior->next->==p->next->priorD、p->next->next==p->prior->prior9、以下说错误的是()A、对循环来说,从表中任一结点出发都能通过前后操作而扫描整个循环链表B、对单链表来说,只有从头结点开始才能扫描表中全部结点C、双链表的特点是找结点的前趋和后继都很容易D、对双链表来说,结点*P的存储位置既存放在其前趋结点的后继指针域中,也存放在它的后继结点的前趋指针域中。
数据结构第一章考试题库(含答案)数据结构第一章考试题库(含答案)一、选择题1. 以下哪种数据结构是先进先出(FIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:B2. 在队列中,元素的插入操作称为什么?A. EnqueueB. DequeueC. PushD. Pop答案:A3. 哪种数据结构是一种不允许重复元素的集合?A. 栈B. 队列C. 链表D. 集合答案:D4. 以下哪种数据结构是后进先出(LIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:A5. 使用链表实现的栈或队列的时间复杂度是多少?A. O(1)B. O(n)C. O(log n)D. O(n^2)答案:A二、填空题1. 广度优先搜索(BFS)使用的数据结构是______。
答案:队列2. 深度优先搜索(DFS)使用的数据结构是______。
答案:栈3. 在二叉树中,每个节点最多有几个子节点?答案:24. 快速排序使用的分治策略是将数组分成几个子数组进行排序?答案:25. 哈希表的平均查找时间复杂度是多少?答案:O(1)三、简答题1. 请简要解释栈和队列的区别。
答案:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作;队列是一种先进先出(FIFO)的数据结构,只能在队尾插入,在队头删除。
2. 请解释什么是链表。
答案:链表是一种动态数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
与数组不同,链表的节点在内存中可以不连续存储,通过指针来链接每个节点。
3. 请简述快速排序的思想和算法步骤。
答案:快速排序使用分治的思想,首先选择一个元素作为基准值,然后将数组划分为两个子数组,小于基准值的元素放在左侧,大于基准值的元素放在右侧。
然后对左右子数组递归地进行快速排序,直到排序完成。
4. 请解释什么是哈希表及其应用场景。
答案:哈希表是一种基于哈希函数进行查找的数据结构,通过将关键字映射到哈希表中的位置来实现高效的查找。
第一章习题:(1) 简述数据与数据元素的关系与区别。
(2) 说出数据结构中的四类基本逻辑结构,并说明哪种关系最简单、哪种关系最复杂。
(3) 画出线性结构的示意图。
(4) 画出树形结构的示意图。
(5) 画出图状结构的示意图。
(6) 什么是逻辑结构、存储结构?有哪几种存储结构?(7) 简述顺序存储结构与链式存储结构在表示数据元素之间关系上的主要区别。
(8) 简述逻辑结构与存储结构的关系。
(9) 通常从哪几个方面评价算法的质量?(10) 算法的时间复杂度主要有哪几种?按从优到劣的顺序写出各种表示形式。
(11) 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。
(12) 下列算法的时间复杂度是( ) 。
for (i=0 ;i<n ;i++ )for (j=0 ;j<n ;j++ )c[i][j]=i+jA. O(1)B. O(n)C. O(log2n)D. O(n2)(13) 下列算法的时间复杂度是( ) 。
for (i=0 ;i<n ;i++ )c[i][i]=i+iA. O(1)B. O(n)C. O(log2n)D. O(n2)第二章习题:(1) 若某线性表采用顺序存储结构,每个元素占四个存储单元,首地址为100,则下标为11的(第12个)元素的存储地址为()。
(2) 下列说法正确的是( ) 。
A. 线性表的逻辑顺序与存储顺序总是一致的B. 线性报第链式存储结构中,内存中可用的存储单元可以使连续的,也可以不连续C. 线性表弟顺序存储结构优于链式存储结构D. 每种数据结构都具有插入、删除和查找三种基本运算(3) L是线性表,已知ListLength(L) 的值是5,运算DeleteList(L,2)后ListLength(L)的值是( ) 。
A. 5B. 0C. 4D. 6(4) 线性表中哪些元素只有一个直接前驱和一个直接后继( ) 。
A. 首元素B. 尾元素C. 中间元素D. 所有的元素(5) 线性表(L )经运算InitList (L )后,函数IEmpty (L )的值是( ) 。
数据结构(第二版)习题库章节练习题1-9章全数据结构(第二版)习题库章节练习题1-9章全第一章:引论引论部分为数据结构的开篇,主要介绍了数据结构的基本概念和分类。
在这一章中,我们学习了数据结构的定义、作用以及与算法的关系。
接下来,将为你详细介绍第一章的习题内容。
1. 习题1-1题目:请简述数据结构的定义和作用。
要求:通过一段简洁清晰的语言来回答问题,并给出你的理解。
答案:数据结构是计算机中存储、组织和管理数据的方式。
它旨在将数据以特定的方式进行排列,以便高效地进行存储和检索。
数据结构作为计算机科学的基础,为我们解决实际问题提供了有效的工具和方法。
2. 习题1-2题目:你认为数据结构与算法之间的关系是什么?要求:结合实际案例,详细解释数据结构与算法之间的相互依赖关系。
答案:数据结构和算法是密不可分的,它们之间存在着相互依赖的关系。
数据结构提供了算法操作的基础,而算法则对数据结构进行操作和处理。
例如,在搜索算法中,我们需要合适的数据结构来存储和组织数据,以便能够高效地进行搜索操作。
而无论是数组、链表还是树,都需要通过算法来进行增删改查等操作。
第二章:算法分析算法分析是数据结构中的重要概念,它涉及到算法的运行时间和空间效率。
在这一章中,我们将学习算法分析的基本方法和常用技巧,并通过习题来巩固所学知识。
3. 习题2-1题目:请解释渐进记号中的"O"表示什么意思。
要求:简明扼要地回答问题,并辅以例子说明。
答案:在算法分析中,"O"表示渐进上界。
它描述了算法在最坏情况下的运行时间复杂度。
例如,如果一个算法的时间复杂度为O(n),那么说明该算法的运行时间与输入规模n成正比。
即使输入规模变大,算法的运行时间也不会超过n的某个常数倍。
4. 习题2-2题目:请说明算法的平均情况分析与最坏情况分析有何区别?要求:用简洁的语言说明两种分析方法的不同之处,并给出具体的示例。
答案:算法的平均情况分析和最坏情况分析的区别在于对输入数据的预先假设。
《数据结构》课程第一章小测验一、判断题:(每题2分,共4分)1、数据元素是数据的最小单位。
F2、线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。
F链表的存储中结点之间可以是连续的,也可以是不连续的。
但结点内部是连续的。
答题区二、选择题:(每题2分,共16分)1、线性表是具有n个()的有限序列。
C(A)表元素(B)字符(C)数据元素(D)数据项2、如果数据结构中每个结点都有一个前驱,则该结构属于()。
A(A)图状结构(B)树形结构(C)循环结构(D)线性结构3、如果数据结构中每个结点都没有后继,则该结构属于()。
D(A)独立结构(B)散列结构(C)树形结构(D)非线性结构4、算法的时间复杂度与()有关。
A(A)问题规模(B)计算机硬件性能(C)编译程序质量(D)程序设计语言5、算法的执行时间一般与()无关。
D(A)问题规模的大小(B)计算机的档次(C)程序设计语言的种类或版本(D)算法设计者的水平6、算法分析的主要任务是分析()。
D(A)算法是否具有较好的可读性(B)算法中是否存在语法错误(C)算法的功能是否符合设计要求(D)算法的执行时间和问题规模之间的关系7、某算法的时间复杂度为O(2n),表明该算法的()。
C(A)问题规模是2n(B)执行时间等于2n(C)执行时间与2n成正比(D)问题规模与2n成正比8、在决定选取何种存储结构时,一般不考虑()。
A(A)各结点的值如何(B)结点数目的多少(C)对数据有哪些运算(D)所用编程语言实现这种结构是否方便三、填空题:(每空2分,共14分)1、数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。
2、一个算法的效率可分为时间效率和空间效率。
3、线性表是具有n个数据元素有限序列。
四、简答题:(每题10分,共20分)1.数据结构和数据类型两个概念之间有区别吗?答:简单地说,数据结构定义了一组按某些关系结合在一起的数据元素。
智慧树知到《数据结构》章节测试答案第1章单元测试1、算法的时间复杂度取决于___。
答案:A和B2、数据在计算机内存中的表示是指()答案:数据的存储结构3、算法指的是()答案:求解特定问题的指令有限序列4、在数据结构中,与所使用的计算机无关的数据结构是()答案:逻辑7、某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为( )。
答案:1448、算法能正确地实现预定功能的特性称为算法的()。
答案:正确性第2章单元测试1、链表不具备的特点是()。
答案:可随机访问任意一个结点3、线性表的顺序存储表示优于链式存储表示。
答案:错4、顺序存储结构的缺点是不便于修改,插入和删除需要移动很多结点。
答案:对5、在设头、尾指针的单链表中,与长度n有关的操作是( )。
答案:删除最后一个结点6、设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B间插入结点X的操作序列为( )。
答案:q->next=s; s->next=p;7、对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )。
答案:用尾指针表示的循环单链表8、在一个单链表中,若p所指节点不是最后节点,在p之后插入s 所指节点,则执行( )。
答案:s->link=p->link;p->link=s;9、在双向链表存储结构中,删除p所指的结点时须修改指针____。
答案:p->next->prior=p->prior; p->prior->next=p->next;10、若事先不知道线性表的长度,则处理线性表时较好的存储结构是( )。
答案:单链表11、向一个有127个元素的顺序表中插入一个新元素并保存,原来顺序不变,平均要移动( )个元素。
答案:63.512、某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为( )。
数据结构自测题答案(前五章)一、填空题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。
2. 数据结构被形式地定义为(D, S),其中D是数据元素的有限集合,S是D上关系的有限集合。
3. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。
4. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
5.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。
6. 一个算法的效率可分为时间效率和空间效率。
7. 线性表中结点的个数是有限的,结点间的关系是一对一的。
8. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1 个元素。
9. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i 个元素。
10. 在顺序表中访问任意一结点的时间复杂度均为O(1),因此,顺序表也称为随机存取的数据结构。
11. 顺序表中逻辑上相邻的元素的物理位置必定相邻。
单链表中逻辑上相邻的元素的物理位置不一定相邻。
12.在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的值指示。
13.在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点,其时间复杂度为O(n)。
14. 线性表、栈和队列都是线性结构,可以在线性表的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。
15. 在具有n个单元的循环队列中,队满时共有n-1 个元素。
16. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。
17. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的字符定位的位置为3。
《数据结构》第1章绪论第2章线性表习题课答案一、选择题1 在下面的程序段中,对x的赋值语句的频度为(C)FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A. O(2n) B.O(n) C.O(n2) D.O(log2n)2 一个算法应该是(B)。
A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C.3 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表4 链表不具有的特点是(B)A.插入、删除不需要移动元素 B.可随机访问任一元素C.不必事先估计存储空间 D.所需空间与线性长度成正比5 完成在双循环链表结点p之后插入s的操作是( D );A. p->next=s ; s->priou=p; p->next->priou=s ; s->next=p->next;B. p->next->priou=s; p->next=s; s->priou=p; s->next=p->next;C. s->priou=p; s->next=p->next; p->next=s; p->next->priou=s ;D. s->priou=p; s->next=p->next; p->next->priou=s ; p->next=s;二、判断题1 数据元素是数据的最小单位。
( × )2 数据的物理结构是指数据在计算机内的实际存储形式。
( √ )3 对任何数据结构链式存储结构一定优于顺序存储结构。
( × )4 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
( × )三、填空1 一个数据结构在计算机中表示(又称映像)称为存储结构。
第一章绪论一.填空题1.数据结构是一门研究非数值计算的程序设计问题中计算机的_____________ 以及它们之间的_________ 和操作等的学科。
2.数据结构包括数据的_____________ 结构、_____________ 结构和运算。
3.数据的物理结构被分为_________、________、__________和___________四种。
4.数据的逻辑结构是指数据元素之间的逻辑关系,根据数据元素之间关系的不同特性,逻辑结构通常有_______________ ,________________ ,________________ 和__________________四类基本结构。
5.一种抽象数据类型包括 ____________和_____________ 两个部分。
6.数据结构是指数据及其相互之间的______________。
当结点之间存在M 对N(M:N)的联系时,称这种结构为____________当结点之间存在1 对N(1:N)的联系时,称这种结构为____________。
7.数据结构被形式地定义为(D, R),其中D是___________ 的有限集合,R是D上的有限集合。
8. 数据的基本单位是________,它在计算机中是作为一个整体来处理的。
9.算法的特性有________,___________ ,____________ ,_______________ 和__________ 等五种特性。
10.通常从四个方面评价算法的质量:_________、_________、_________和_________。
11.算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。
12.算法的效率可分为______________ 效率和__________________ 效率。
13.算法的时间复杂度为(3n3+2000n log2n+90)/n2,其数量级表示为________。
第一章自测题一填空题1.数据管理技术的发展,与硬件、系统软件和计算机应用范围有密切的联系。
2.文件系统的缺陷是:数据冗余_、数据不一致_和数据联系弱。
3.对现实世界进行第一层抽象的模型,称为概念模型;对现实世界进行第二层抽象的模型,称为逻辑模型。
4.在层次、网状模型中,用指针导航数据;而在关系模型中,用关键码导航数据。
5.数据库的三级模式结构是对数据的三个抽象级别。
6.在数据库技术中,编写应用程序的语言仍然是C一类高级语言,这些语言被称为主语言。
7.在DB的三级模式结构中,数据按外模式的描述提供给用户,按内模式的描述存储在磁盘中,而逻辑模式提供了连接这两级的相对稳定的中间观点,并使得两级中的任何一级的改变都不受另一级的牵制。
8.DBS中存放三级结构定义的DB称为数据字典。
9.DBS是数据库、硬件_、软件_和DBA _的集合体。
10.根据计算机的系统结构,DBS可分成四种类型:集中式_、分布式_、CS式_和并行式_。
二单项选择题(在备选答案中选出一个正确答案)1.在DBS中,DBMS和OS之间关系是[D ] A.并发运行B.相互调用C.OS调用DBMS D.DBMS调用OS2.在数据库方式下,信息处理中占据中心位置的是[C ] A.磁盘 B.程序 C.数据 D.内存3.DB的三级体系结构是对_抽象的三个级别。
[B ]A.存储器B.数据C.程序D. 外存4.DB的三级模式结构中最接近外部存储器的是[ ]A.子模式B.外模式C.概念模式D.内模式5.DBS具有“数据独立性”特点的原因是因为在DBS中[ ]A.采用磁盘作为外存B.采用三级模式结构C.使用OS来访问数据D.用宿主语言编写应用程序6.在DBS中,“数据独立性”和“数据联系”这两个概念之间联系是[ ] A.没有必然的联系B.同时成立或不成立C.前者蕴涵后者D.后者蕴涵前者7.数据独立性是指[ ] A.数据之间相互独立B.应用程序与DB的结构之间相互独立C.数据的逻辑结构与物理结构相互独立D.数据与磁盘之间相互独立8.DB中数据导航是指[ ] A.数据之间联系B.数据之间指针联系C.从已知数据找未知数据的过程D.数据的组合方式9.用户使用DML语句对数据进行操作,实际上操作的是[ ] A.数据库的记录B.内模式的内部记录C.外模式的外部记录D.数据库的内部记录值10.对DB中数据的操作分成两大类:[ ] A.查询和更新B.检索和修改C.查询和修改D.插入和修改三问答题1.试对数据管理技术三个发展阶段作一详细的比较。
数据结构自测题1一、单项选择题1.线性表若采用链表存储结构时,要求内存中可用存储单元的地址( D ).A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续不连续都可以2。
在单链表中,增加头结点的目的是为了( C )A.使单链表至少有一个结点B.表示表结点中首结点的位置C.方便运算的实现D.说明单链表是线性表的链式存储实现3。
设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应是( B )A.2 B.3 C.4 D.54。
树结构中,前驱结点与后继结点之间存在( B )关系。
A.一对一B.一对多C.多对一D.多对多5.堆栈的特性描述是( B ).A.FIFO B.FILO C.FIFO和FILO D.FIFO或FILO6.队列的特性描述是( A )。
A.FIFO B.FILO C.FIFO和FILO D.FIFO或FILO 7。
下列数据结构中,是非线性结构的是( A )A.树B.堆栈C.队列D.循环队列8.设某个初始为空的容纳int型数据的堆栈进行了如下操作(每一步均未发生溢出):push (1)、push(3)、pop()、push(6)、push(1)、pop()、push(3)、push(8) 后,该堆栈中从栈顶到栈底的元素依次为( D )A.8 1 8 3 B.1 3 1 8 C.1 6 3 8 D.8 3 6 1二、判断题1.二叉树可以为空树。
(√)2.顺序表和链表都是线性表.(√)3。
线性表的长度是线性表占用的存储空间的大小.(√)4。
队列只能采用链式存储方式.(×)5。
由二叉树的先序序列和中序序列能唯一确定一棵二叉树。
(√)6。
存在有偶数个结点的满二叉树。
(×)三、填空题1。
数据结构是数据在计算机内的组成形式和相互关系。
第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储方法实现?5.选择题(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.栈6.试分析下面各程序段的时间复杂度。
(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; n ext=s; (*s).next=(*p).next;C.s->next=p->next; p->next=s->next;D.s->next=p->next; p->next=s;(14) 在双向链表存储结构中,删除p所指的结点时须修改指针()。
《数据结构》第一、二章自测题一、选择题1 .计算机算法必须具备输入、输出和( )等5个特性。
A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性2.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:()。
A.p->next=s;s->next=p->next; B.p->next=s->next;p->next=s;C.p->next=s;p->next=s->next; D.s->next=p->next;p->next=s;3.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。
A. 单链表 B.单循环链表C. 带头结点的双循环链表D.带尾指针的单循环链表4.从逻辑上来分,数据结构可以分为()两大类。
A. 动态结构、静态结构B.顺序结构、链式结构C. 线性结构、非线性结构D.初等结构、构造型结构5.算法分析的两个主要方面是:()A.空间复杂性和时间复杂性 B.正确性和简明性C.可读性和文档性 D.数据复杂性和程序复杂性6. 计算机算法指的是:()A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法7. 一个顺序表由(a0,a1,a2,…a n-1)n个元素构成,a0存储地址是100,每个元素的长度为2,则a4元素的地址是()A.110B.108C.100D.1208.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。
A.8B.63.5C.63D.79.线性表L在( )情况下适用于使用链式结构实现。
A.需经常修改L中的结点值B.需不断对L进行删除插入C.L中含有大量的结点D.L中结点结构复杂10.在一个以 h 为头的单循环链中,p 指针指向链尾的条件是()A. p->next=hB. p->next=NULLC. p->next->next=hD. p->data=-111. 对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()A.head==NULL B.head→next==NULL C.head→next==head D.head!=NULL12. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以13.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表14.与单链表相比,双向链表的优点之一是()A.插入、删除操作更简单B.可以进行随机访问C.可以省略表头或表尾指针D.访问前后结点更灵活15.在双向链表中,删除P结点的操作()(结点空间释放语句省略)A.p->prior->next=p->next; p-> next -> prior =p-> priorB. p-> prior= p-> prior -> prior; p-> prior -> prior=p;C. p-> next -> prior =p; p->next= p-> next ->next;D. p-> next= p-> prior -> prior; p-> prior= p-> prior -> prior;16. 在双向循环链表中,在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->prior=p; q->next=p->next; p->next=q; p->next->prior=q;17. 以下说法错误的是()。
A.求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低B.顺序存储的线性表可以随机存取C.由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活D.线性表的链式存储结构优于顺序存储结构18.若一个算法的时间复杂度用T(n)表示,其中n 的含义是()A.问题规模B.语句条数C.循环层数D.函数数量19.将长度为n 的单链表连接在长度为m 的单链表之后,其算法的时间复杂度为()A.O(1) B.O(m) C.O(n) D.O(m+n)20.对于三个函数f(n)=2008n3+8n2+96000,g(n)=8n3+8n+2008 和h(n)=8888nlogn+3n2,下列陈述中不.成立的是()A.f(n)是0(g(n)) B.g(n)是0(f(n)) C.h(n)是0(nlogn) D.h(n)是0(n2) 21. 指针p、q 和r 依次指向某循环链表中三个相邻的结点,交换结点*q 和结点*r 在表中次序的程序段是()A.p->next=r; q->next=r->next; r->next=q;B.p->next=r; r->next=q; q->next=r->next;C.r->next=q; q->next=r->next; p->next=r;D.r->next=q; p->next=r; q->next=r->next;22.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )A.顺序表B.用头指针表示的单循环链表C.用尾指针表示的单循环链表D.单链表二、填空题1、程序段i=1; while(i<=n) i=i*3;的时间复杂度为。
2、在长度为n的顺序表的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动个元素3、带头结点的双循环链表L为空表的条件是:。
4、以下程序的功能是实现带头结点的单链表数据结点逆序连接,请填空完善之。
void reverse(LinkList h) // h为头结点指针;{ LinkList p,q;p=h->next; h->next=NULL;while( _______){q=p; p=p->next; q->next=h->next; h->next= ________; } }5.数据的链式存储结构的特点是借助________表示数据元素之间的逻辑关系。
6.在如图所示的链表中,若在指针p 所指的结点之后插入数据域值相继为a 和b 的两个结点,则可用下列两个语句实现该操作,它们依次是________和________。
三、判断题(请在你认为正确的后面的括号内打√,错误的打×。
)1.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
( )2.顺序存储方式的优点是存储密度大,且插入、删除运算效率高.( )3.线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻( )4.循环链表不是线性表.( )5. 算法的优劣与算法描述语言无关,但与所用计算机有关。
( )6. 线性表的特点是每个元素都有一个前驱和一个后继。
( )四、算法设计题1.试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。
void delete(Linklist &L)2. 将两个递增的有序链表合并为一个递增的有序链表。
要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。
表中不允许有重复的数据。
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc)3.已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。
void Delete_Sq(SqList &A)4.假设该链表只给出了头指针list 查找链表中倒数第K 位置的结点(K 为正整数),若查找成功,算法输出该结点 data 域的值,并返回1,否则只返回0;要求:(1)简述算法的基本设计思想;(2)描述算法的详细实现步骤(使用C ,或C++实现 ),关键之处给出详细解释。
5. 已知非空线性链表第一个结点的指针为list ,请写一个算法,将该链表中数据域值最大的那个结点移到链表的最后面。
6. 若已知非空线性链表第一个结点的指针为list ,请 写一个算法,将该链表中数据域值最小的那个结点移到链表的最前端。
7. 已知一个带有表头结点的单链表,头指针为L ,请用一个尽可能高效的算法实现,在非头结点p 所指元素前,插入元素e,并分析算法的时间复杂度。
8. 已知一个带有表头结点的单链表,头指针为L ,请用一个尽可能高效的算法实现,删除非头结点p 所指元素,并分析算法的时间复杂度。
9.试设计实现在单链表中删去值相同的多余结点的算法。
10. 编写算法,判断带头结点的双向循环链表L 是否对称。
对称是指:设各元素值a 1,a 2,...,a n , 则有a i =a n-i+1 ,即指:a 1= a n ,a 2= a n-1 。
结点结构为:11. 已知带头结点的动态单链表L 中的结点是按整数值递增排列,试写一算法将值为X 的结点插入链表L 中,使L 仍然有序。
12. 假设线性表采用顺序存储结构,编写算法,将顺序表L 中所有值为奇数的元素调整到表的前端。