数据结构-综合练习题-打印
数据结构 练习题
6. 已知一棵二叉树的先序遍历序列为EFHIGJK,中序遍历序列为HFIEJGK,则该二叉树根的右子树的根是
A)E B)F C)G D)J
7. 设结点A有左孩子结点B,右孩子结点C,则在先序遍历、中序遍历、后序遍历这三种基本遍历序列中B一定是C的
图6-2 例6.3附图
6 自测习题
1. 简答题
1. *根据权值(1,2,3,4,5,6),构造哈夫曼树,并计算二叉树的带权路径长度。
2. 请
将下图6-1所示的森林转换成二叉树。
图6-1 简答题2的附图森林
3. *已知一棵二叉树的中序遍历序列为DHBEAIFCGJK,该二叉树的后序遍历序列是HDEBIFJKGCA,现请画出这棵二叉树。
第1章 概述
一、简答题
1.简述以下术语的含义并说明它们之间的关系。
数据类型、数据结构、逻辑结构、存储结构
2.简述算法时间效率和空间效率的概念。
3.简述数据结构课程的目的和意义。
二、选择题
1.以下数据结构中,逻辑结构属于线性结构的是
A)有向图 B)链式栈 C)二叉树 D)二叉排序树
四、算法及分析
1.写出交换两个整型变量值的算法,并分析算法的时间复杂度。
2.写出求n的阶乘 的算法,并分析算法的时间复杂度。
第2章 线性表
一、简答题
1.在处理某个问题时,需要存储的数据总量不能确定,并经常需要进行数据的添加和删除操作,此时应选用哪种存储结构?为什么?
3.设有结点定义
struct node
{ int data;
struct node *next;
数据结构练习题(含答案)(DOC)
数据结构练习题习题1 绪论单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。
①A.操作对象B.计算方法C.逻辑结构D.数据映象②A.存储结构B.关系C.运算D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。
①A.算法B.数据元素C.数据操作D.数据对象②A.操作B.映象C.存储D.关系3. 在数据结构中,从逻辑上可以把数据结构分成。
)A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4. 算法分析的目的是①,算法分析的两个主要方面是②。
① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B. 正确性和简明性C. 可读性和文档性D. 数据复杂性和程序复杂性5. 计算机算法指的是①,它必具备输入、输出和②等五个特性。
① A. 计算方法 B. 排序方法C. 解决问题的有限运算序列D. 调度方法!② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性D. 易读性、稳定性和安全性填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括、和三种类型,树形结构和图形结构合称为。
2. 在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。
3. 在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。
4. 在图形结构中,每个结点的前驱结点数和后续结点数可以。
5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
数据结构练习题及答案
数据结构练习题(一)一、单选题1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进行插入运算时( )。
A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.以下数据结构中( )是非线性结构。
A. 队列B. 栈C. 线性表D. 二叉树4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在()位置。
脚注(10)表示用10进制表示。
A.688 B.678 C.692 D.6965.树最适合用来表示( )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6.二叉树的第k层的结点数最多为( )。
A.2k-1 B.2K+1 C.2K-1 D. 2k-17.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )。
A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有()个。
A.1 B.2 C.3 D.49.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
A.5B.6C.7D.8二、填空题1.通常从四个方面评价算法的质量:_________、_________、_________和_________。
2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。
3.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数为__________个,树的深度为___________,树的度为_________。
《数据结构》练习题库
一、填空题1.数据结构根据数据元素之间关系的不同特性,有四种基本结构:集合、线性结构、和。
2.数据结构的形式定义可用二元组表示,其成分分为数据元素的有限集,和。
3.一个好的算法设计应满足正确性、、健壮性和效率与低存储量需求。
4.数组是一种存取的存储结构。
5.串中组成的子序列称该串的子串。
6.稀疏矩阵存储时,常采用三元组表和的表示方法。
7.设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1,则T中叶子结点的个数是。
8.指针pred 指向刚刚访问过的结点,p 指向当前访问的结点,结点的结构含有左指针lchild,右指针rchild,左标志ltag,右标志rtag,当结点的左指针为空时,线索化操作为:p->ltag=1;和。
9.用图的顶点表示活动,用弧表示活动间的优先关系的有向图称为网。
10.排序方法稳定的,是指排序后的序列中的元素前后次序仍不变。
11.文件在存储介质(磁盘或磁带)上的组织方式称为文件的。
12.索引文件是包括和索引表两大部分的文件。
13.在算法是正确的前提下,评价算法的两个标准是、。
14.链表是一种存取的存储结构。
15.设链栈的栈顶指针为LS,链栈的结点结构为,栈空的条件是。
16.在非空双链表(结点结构为)中,指针p指向该链表中的某个结点。
若要指针p往前移动两个结点,即使p指向当前结点的前驱的前驱(假定存在这样的结点),则需要执行一个语句。
17.设无向图G用邻接表表示,图中顶点V i的度等于。
18.中序遍历二叉排序树可得到一个关键字的。
19.后序遍历如图所示的一棵二叉树,所得到结点序列为。
20.在有n 个叶子结点的哈夫曼树中,其结点总数为 。
21.含有n 个顶点的无向图是一个环,则它有 棵生成树。
22.设单链表的结点结构为,且r 始终指向单链表的最后一个结点,要在最后一个结点之后插入由s 所指向的结点,需要执行的三条语句是 ;r=s ;s->next=NULL ;23.串中任意个连续的字符组成的子序列称为 。
专升本数据结构试题
号(==) 重载函数,该函数第一个参数应与 ra ,的类型相同,第二个参数应与rb 的类型相同。
15.从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为 O(n) ,输出一个二维数组b[m][n]中所有元素值的时间复杂度为 O(m*n) 。
三、应用题
1.设计二次多项式ax2+bx+c的一种抽象数据类型,假定起名为QIAdratic,该类型的数据部分分为三个系数项a、b和c,操作部分为:(请写出下面每一个操作的具体实现)。
⑴ 初始化数据成员ab和c(假定用记录类型Quadratie定义成员),每个数据成员的默认值为0。
Quadratic InitQuadratic(float aa=0,float bb=0,float cc=0);
}
A O(1) B O(n) C O(n2) D O(n!)
二、填空题
1.数据的逻辑结构被除数分为 集合结构 、 线性结构 、 树型结构 和 图形结构 四种。
2.数据的存储结构被分为 顺序结构 、 链接结构 、 索引结构 和 散列结构 四种。
3.在线性结构、树型结构和图形结构中,前驱和后继结点之间分别存在着 1对1 、 1对N 和 M对N 的关系。
A n2 B n2/2 C n(n+1) D n(n+1)/2
6.下面算法的时间复杂度为 B 。
int f(unsigned int n){
if(n==0||n==1) return 1;
Else return n*f(n-1);
1、假设有如下关键码及其散列函数值:
数据结构练习题
后, rear 的值为 , front 的值 为 ,当前队列的 长 度 为 。 14.设循环队列的容量为 40(序号从 0 到 39), 现经过一系列的入队和出队运算后, 有: ① front=11,rear=19; ② front=19,rear=11; 问在这两种情况下,循环队列中各有元素多少个? 15.写出下列程序段的输出结果(队列中的元素类型 QElem Type 为 char)。 void main( ){ Queue Q; Init Queue (Q); Char x=’e’; y=’c’; EnQueue (Q,’h’); EnQueue (Q,’r’); EnQueue (Q, y); DeQueue (Q,x); EnQueue (Q,x); DeQueue (Q,x); EnQueue (Q,’a’); while(!QueueEmpty(Q)){ DeQueue (Q,y); printf(y); }; printf(x); } 16.简述以下算法的功能(栈和队列的元素类型均为 int) void algo3(Queue &Q){ Stack S; int d; InitStack(S); while(!QueueEmpty(Q)){ DeQueue (Q,d); Push(S,d); }; while(!StackEmpty(S)){ Pop(S,d); EnQueue (Q,d); } }
第一章 绪论
1.数据结构是研究数据的( )以及它们之间的相互关系。 A.物理结构,逻辑结构 B.理想结构,抽象结构 C.理想结构,物理结构 D.抽象结构,逻辑结构 2.从逻辑上可以把数据结构分为( )两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 3.以下不属于算法要素的是( ) A. 有穷性 B. 可行性 C. 可读性 D. 输入 4.算法的时间复杂度与( )有关。 A.问题规模 B.计算机硬件性能 C.编译程序质 D.程序设计语言 2 5.某算法的时间复杂度为 O(n ),表明该算法的( ) 2 A.问题规模是 n B.执行时间等于 n2 C.执行时间与 n2 成正比 D.问题规模与 n2 成正比 6.假设某算法语句总的执行次数为 T(n)=2n³ +n² ,那么该算法的时间复杂性量级为 ( ) A.O(2) B.O(n³ ) C.O(n² ) D.O(1) 7.设 n 为正整数,下面程序段中标号为①的语句频度为 。 int i = 1; k = 0; while ( i <= n-1 ){ k += 10*i; ① i++; } 8.程序段 for( i=0; i<n; i++ ) for( j=0; j<i; j++ ) k++; 中,语句 k++的执行次数为 。 9.在下面的程序段中,对 x 的赋值语句的渐进时间复杂度为 。 for(k=1;k<=n;k++) for(j=1;j<=n;j++) x=x+1; 10.下面程序段的时间复杂度为 。 void fun(int n) { int y=1; while (y <=n) y=2*y; }
数据结构综合练习题(答案)
数据结构综合练习题一、简答题:1、简述堆栈和队列两种数据类型的异同点。
栈和队列都是线性结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。
2、什么静态查找表和动态查找表。
静态查找表——仅作查询和检索操作的查找表。
动态查找表——在查询之后,还需要将“查询”结果为“不在查找表中”的数据元素插入到查找表中;或者,从查找表中删除其“查询”结果为“在查找表中”的数据元素。
3、试比较顺序存储结构和链式存储结构的优缺点。
在什么情况下用顺序表比链表好?答:① 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。
优点:存储密度大(=1),存储空间利用率高。
缺点:插入或删除元素时不方便。
②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针优点:插入或删除元素时很方便,使用灵活。
缺点:存储密度小(<1),存储空间利用率低。
顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。
若线性表的长度变化不大,且其主要操作是查找,则采用顺序表;若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。
4、分析稳定的排序和不稳定的排序方法。
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
5、图的存储结构有哪些?十字链表,邻接矩阵,邻接表,邻接多重表,二维数组。
6、简述度为2的树与二叉树的区别。
二叉树的度最大为2,而树的度无此限制。
在二叉树中,一个节点的子树有左、右之分,不能互换位置。
而度为2的树则无此限制。
三、程序分析写结果:1、写出下列程序段的输出结果(栈的元素类型为char;字符型)。
数据结构练习题及参考答案
《数据结构》练习题一、解答题(共50分)1、(8分)假设用于通讯的电文字符集及其出现的频率如下表所示。
请为这8个字符设计哈夫曼编码,并画出其哈夫曼树,计算WPL 。
2. (8分)若一棵二叉树中序遍历和后序遍历序列分别为:DBEHGAFIC 和DHGEBIFCA 。
试画出这棵二叉树,并写出其先序遍历和层序遍历序列。
3.(16分)以下无向网络以邻接表为存储结构(假设邻接表的顶点表按字母a 、b 、c 、d 、e 、f 、g 、h 的顺序依次存储,邻接表的边表结点按顶点的下标由小到大链接)。
请画出其邻接表,并写出从顶点f 出发,分别进行深度和广度优先遍历的序列,写出用Prime 方法从顶点c开始产生最小生成树的边的序列。
4.(8分)已知键值序列为(44,39,67,25, 52,59,43,84,54,58,15,26,12,73,92,69),取填充因子α=0.8,采用线性探查法处理冲突,试构造散列表。
⒌(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81),用希尔排序方法进行排序,d1=5,d2=3,d3=1,则第二趟的排序结果是( )。
⒍(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81) ,用堆(大根堆)排序方法进行排序,第一趟的排序结果是( )。
二、完善程序(共20分,每空2分)1.假设一组递减有序的原始数据存储在数组r 中,存放元素的下标下限为low,下标上字符 出现频率 a 0.05 b 0.03 c 0.24 d 0.16 e 0.08 f 0.24 g 0.18 h0.02限为high,以下是在数组中查找数值为k的折半查找算法。
请填空完善程序。
int BinSearch(int r[ ], int low,int high,int k){ int l,h,m;l= low; h= high;while ( ⑴){m= ⑵;if (k < r[m]) ⑶;else if (k > r[m]) ⑷;else return m;}return 0;}2. 以下程序功能是将数组r中,从下标first到end之间的元素进行快速排序的分区。
《数据结构》练习题一、选择题a是...
《数据结构》练习题一、选择题1.一个数组元素a[i]与( A )的表示等价。
A .*(a+i ) B .a+i C .*a+i D .&a+ia 是存储的是数组首地址,*a 指向的就是数组第一个元素a[0],所以*(a+i )的地址和a[i]的地址一样。
数组和指针在一定程度上本质是一样的。
2.当利用大小为N 的数组顺序存储一个栈时,假定用top==N 表示栈空,则退栈时,修改top 指针的语句是( A )。
A .top++;B .top=0;C .top--;D .top=N; 3.队列的删除操作是在( A )进行。
A .队首B .队尾C .队前D .队后队列删除元素是在队首进行,队列是进先先出,相对来说,队首元素是最先进入队列的,因此出队应该是在队首进行。
队列其实就和我们平时排队一样的4.二叉树上叶子结点数等于( C )。
A .分支结点数加1B .单分支结点数加1C .双分支结点数加1D .双分支结点数减15.哈希冲突是指( D )。
A .两个元素具有相同的序号B .两个元素的键值不同,而其他属性相同C .数据元素太多D .不同键值的元素对应于相同的存储地址6.由权值分别为3,6,7,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( A )。
A .51B .23C .53D .742310 135 56 72 3(2+3)*3+5*2+(6+7)*2=517.某程序的时间复杂度为)log log 1003(22n n n n +⨯+,其数量级表示为( B )。
A .O(n)B .)log (2n n OC .O(100)D .)(log 2n O8.从二叉搜索树中查找一个元素时,其时间复杂度大致为( C )。
A .O(n)B .O(1)C .)(log 2n OD .)(2n O9.在线性表的散列存储中,若用m 表示散列表的长度,n 表示待散列存储的元素的个数,则装填因子α等于( A )。
数据结构考试题及答案
数据结构考试题及答案一、选择题1. 下列哪种数据结构是一种线性结构?A. 树B. 栈C. 图D. 队列答案:B. 栈2. 以下哪种不是二叉树的遍历方式?A. 先序遍历B. 层序遍历C. 后序遍历D. 中序遍历答案:B. 层序遍历3. 在队列中,哪种操作不是O(1)时间复杂度的?A. 入队B. 出队C. 判空D. 获取队首元素答案:D. 获取队首元素二、填空题4. 二叉查找树的中序遍历结果为_______。
答案:升序排列的序列5. 栈的特点是_______进,_______出。
答案:后进,先出6. 图中两点间存在边则称它们为_______。
答案:邻接点三、简答题7. 请简要介绍一下栈和队列的应用场景及区别。
答:栈和队列都是常用的数据结构,栈适合用于实现括号匹配、表达式求值等场景,而队列常用于实现广度优先搜索、缓存队列等。
栈是一种后进先出的数据结构,而队列是一种先进先出的数据结构。
8. 什么是哈希表?它的优缺点分别是什么?答:哈希表是一种通过哈希函数将关键字映射到数组位置的数据结构。
其优点是能够快速查找、插入、删除元素,时间复杂度接近O(1);缺点是可能发生哈希冲突,导致性能下降。
四、综合题9. 给定以下无向图的邻接矩阵表示,请写出图的深度优先搜索(DFS)遍历路径。
```0 1 2 30 0 1 0 11 1 0 1 12 0 1 0 13 1 1 1 0```答:起始节点为0,路径:0 - 1 - 3 - 210. 写出以下树的层序遍历结果。
```1/ \2 3/ \ / \4 5 6 7```答:1 - 2 - 3 - 4 - 5 - 6 - 7以上就是数据结构考试题及答案,希望对您有所帮助。
如果有不清楚的地方,欢迎随时向老师询问。
祝您考试顺利!。
数据结构练习题1
数据结构练习题1⼀、单项选择题1.若⽤⼀个⼤⼩为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除⼀个元素,再加⼊两个元素后,rear和front的值分别为多少?( )A. 1和 5B. 2和4C. 4和2D. 5和1⼤⼩为6的数组:下标从0-5;从前⾯出队,从后⾯⼊队front(前⾯)=3rear(后⾯)=0当出队列中删除⼀个元素,也就是出队,即front+1:=4再插⼊两个元素,即rear+2= 2【注】循环队列中,由于⼊队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。
因此,⽆法通过条件front==rear来判别队列是"空"还是"满"。
2.循环队列A[0..m-1]存放其元素值,⽤front和rear分别表⽰队头和队尾,则当前队列中的元素数是( )。
A. (rear-front+m)%mB. rear-front+1C. rear-front-1D. rear-front3.for(i=0;ifor(j=0;jA[i][j]=i*j;上⾯算法的时间复杂度为( )A.O(m2)B.O(n2)C.O(m×n)D.O(m+n)4.设h是指向⾮空带表头结点的循环链表的头指针,p是辅助指针。
执⾏程序段p=h;while (p->next->next!=h)p=p->next;p->next=h;后(其中,p->next为p指向结点的指针域),则( )A. p->next指针指向链尾结点B. h指向链尾结点C. 删除链尾前⾯的结点D. 删除链尾结点5.假设带头结点的单向循环链表的头指针为head,则该链表为空的判定条件是()A.head= =NULLB.head–>next= =NULLC.head!=NULLD.head–>next= =head6. 设顺序表有19个元素,第⼀个元素的地址为200,且每个元素占3个字节,则第14个元素的存储地址为( )A.236B.239C.242D.2457. 若⼀棵⼆叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A .9B .11C .15D .不确定8. n 个结点的线索⼆叉树上含有的线索数为()A .2nB .n -lC .n +lD .n9. 设有⼀个栈,按A 、B 、C 、D 的顺序进栈,则可能为出栈序列的是( )A.DCBAB.CDABC.DBACD.DCAB10. 归并排序中,归并的趟数是( )。
数据结构复习题 有答案的打印版
一、选择题1.下面关于线性表的叙述中,错误的是哪一个?( B )A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
3.线性表是具有n个( C )的有限序列(n>0)。
A.表元素B.字符C.数据元素D.数据项E.信息项2.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表3.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表4. 静态链表中指针表示的是( C ).A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址5. 链表不具有的特点是( B )A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比1. 对于栈操作数据的原则是(B )。
A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?( A )A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 41 5 63. 设栈的输入序列是1,2,3,4,则(D )不可能是其出栈序列。
A. 1,2,4,3,B. 2,1,3,4,C. 1,4,3,2,D. 4,3,1,2,E. 3,2,1,4,1. 已知数组A[0..9,0..9]的每个元素占5个存储单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,求A[6,8]的地址。
13402. 已知二维数组A[1..10,0..9]中每个元素占4个单元,在按行优先方式将其存储到起始地址为1000的连续存储区域时,求A[5,9]的地址。
数据结构练习题1-5章(答案)
11、 一个栈的输入序列为 123…n,若输出序列的第一个元素是 n,输出第 i(1<=i<=n)个元
素是( B )。
A. 不确定
B. n-i+1
C. i
D. n-i
1
12、 有六个元素 6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?( C )
A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6
A. 1 和 5
B. 2 和 4
C. 4 和 2
D. 5 和 1
16、下面关于串的的叙述中,哪一个是不正确的?( B )
A.串是字符的有限序列
B.空串是由空格构成的串
C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储
17、设有两个串 p 和 q,其中 q 是 p 的子串,求 q 在 p 中首次出现的位置的算法称为( c )
A. 内存地址
B.数组下标 C.下一元素地址
D.左、右孩子地址
7、下面的叙述不正确的是( BC )
A.线性表在链式存储时,查找第 i 个元素的时间同 i 的值成正比
B. 线性表在链式存储时,查找第 i 个元素的时间同 i 的值无关
C. 线性表在顺序存储时,查找第 i 个元素的时间同 i 的值成正比
D. 线性表在顺序存储时,查找第 i 个元素的时间同 i 的值无关
13、 设有三个元素 X,Y,Z 顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是( C )。
A.XYZ
B. YZX
C. ZXY
D. ZYX
14、 假设以数组 A[m]存放循环队列的元素,其头尾指针分别为 front 和 rear,则当前队列中的
数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题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. 函数2. 根据牛顿第三定律,以下说法正确的是:A. 作用力和反作用力总是相等的B. 作用力和反作用力可以是不同性质的力C. 作用力和反作用力可以作用在不同物体上D. 作用力和反作用力可以同时消失3. 在经济学中,以下哪个概念与“边际效用递减”不符?A. 消费者偏好B. 效用最大化C. 需求曲线D. 替代效应## 二、填空题4. 在数学中,一个数的平方根表示为 ________ 。
5. 物理学中的“能量守恒定律”表明,在封闭系统中,能量的总量是________ 。
6. 化学中的“摩尔”是表示物质的量的基本单位,1摩尔任何物质都包含 ________ 个基本单位。
## 三、简答题7. 简述什么是遗传算法,并说明其在解决优化问题中的优势。
8. 解释什么是光的折射,并给出一个日常生活中的折射现象的例子。
## 四、计算题9. 一个物体从静止开始以恒定加速度运动,经过4秒后,求其位移。
(加速度为5 m/s²)10. 一个电路中,电阻R1为100欧姆,R2为200欧姆,它们串联在一起,求总电阻。
## 五、论述题11. 论述人工智能技术在医疗领域的应用,并探讨其对未来医疗行业的影响。
答案:1. D2. A3. D4. \( \sqrt{x} \)5. 守恒6. \( 6.022 \times 10^{23} \)7. 遗传算法是一种模拟自然选择和遗传学原理的搜索算法,用于解决优化和搜索问题。
它通过模拟生物进化过程中的遗传、交叉和变异操作来优化解。
优势包括能够处理大规模问题、并行处理能力、适应性强等。
8. 光的折射是指光从一种介质进入另一种介质时,其传播方向发生改变的现象。
例如,当光从空气进入水中时,由于两种介质的折射率不同,光线会向水的折射率较大的一侧偏折。
数据结构练习题及答案
数据结构练习题及答案数据结构练习题及答案数据结构是计算机科学中非常重要的一个概念,它涉及到如何组织和存储数据以及如何有效地操作这些数据。
在学习数据结构的过程中,练习题是非常关键的一部分,通过解决练习题可以加深对数据结构的理解和运用能力。
本文将分享一些常见的数据结构练习题及其解答,希望能够帮助读者更好地掌握数据结构。
1. 数组反转题目:给定一个整型数组,将数组中的元素反转,要求不使用额外的空间。
解答:可以使用双指针的方法,一个指针指向数组的首部,一个指针指向数组的尾部,然后依次交换两个指针所指向的元素,直到两个指针相遇为止。
2. 链表倒数第K个节点题目:给定一个单向链表和一个正整数K,找出链表中倒数第K个节点的值。
解答:可以使用快慢指针的方法,首先让快指针先走K步,然后快慢指针同时向前移动,直到快指针到达链表尾部,此时慢指针所指的节点即为倒数第K个节点。
3. 栈的应用:括号匹配题目:给定一个字符串,判断其中的括号是否配对合法。
解答:可以使用栈来解决该问题,遍历字符串的每个字符,如果是左括号则入栈,如果是右括号则判断栈顶元素是否为对应的左括号,如果是则出栈,否则返回括号不合法。
4. 队列的应用:滑动窗口最大值题目:给定一个整型数组和一个滑动窗口的大小,求出每个滑动窗口中的最大值。
解答:可以使用双端队列来解决该问题,遍历整个数组,对于每个元素,如果队列不为空且队列尾部的元素小于当前元素,则将队列尾部的元素出队,重复该操作直到队列为空或者队列尾部的元素大于等于当前元素。
然后将当前元素入队。
同时,如果队列头部的元素已经不在当前滑动窗口的范围内,则将其出队。
每次滑动窗口移动时,队列头部的元素即为当前窗口的最大值。
5. 二叉树的遍历题目:给定一个二叉树,实现其前序、中序和后序遍历。
解答:可以使用递归的方法来实现二叉树的遍历。
前序遍历的顺序为根节点-左子树-右子树,中序遍历的顺序为左子树-根节点-右子树,后序遍历的顺序为左子树-右子树-根节点。
数据结构综合练习题[1]
一、选择题1.下列程序段的时间复杂度为()。
i=0,s=0; while (s<n) {s=s+i;i++;}(A) O(n1/2) (B) O(n1/3) (C) O(n) (D) O(n2)2.设某链表中最常用的操作只是在链表中进行查找,则最好采取下列()存储方式最节省运算时间。
(A) 无序静态表(B) 有序静态表(C) 单向链表(D) 双向循环链表3.设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B插入结点X的操作序列为()。
(A) s->next=p->next;p->next=-s;(B) q->next=s;s->next=p;(C) p->next=s->next;s->next=p;(D) p->next=s;s->next=q;4.设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为()。
(A) 5,3,4,6,1,2 (B) 3,2,5,6,4,1(C) 3,1,2,5,4,6 (D) 1,5,4,6,2,35.设有一个10阶的下三角矩阵A(包括对角线),按照从上到下、从左到右的顺序存储到连续的55个存储单元中,每个数组元素占1个字节的存储空间,则A[5][4]地址与A[0][0]的地址之差为()。
(A) 10 (B) 19 (C) 28 (D) 556.设一棵m叉树中有N1个度数为1的结点,N2个度数为2的结点,……,Nm个度数为m的结点,则该树中共有()个叶子结点。
(A) ∑=-miiNi1)1((B) ∑=miiN1(C) ∑=miiN2(D) ∑=-+miiNi2)1(17. 二叉排序树中左子树上所有结点的值均()根结点的值。
(A) < (B) > (C) = (D) !=8. 设一组权值集合W=(15,3,14,2,6,9,16,17),要求根据这些权值集合构造一棵哈夫曼树,则这棵哈夫曼树的带权路径长度为()。
(完整版)数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构综合练习题1填空题1.数据结构包含三个方面的内容,分别是数据的逻辑结构、数据的存储结构和数据的运算。
2.实现数据结构的四种存储方法有顺序存储方法、链接存储方法、索引存储方法和散列存储方法。
3.数据结构的逻辑结构有线性结构和非线性结构两大类。
4.一种抽象数据类型包括抽象数据的组织和与之相关的操作两个部分。
5.算法的五个重要特性是输入、输出、确定性、可行性和有穷性。
6.栈顶的位置是随进栈和出栈操作而变化的。
7.在链队列只有一个元素的情况下,对其做删除操作时,应当把对头指针和队尾指针都置为null。
8.操作系统中先来先服务是数据结构中的队列应用的典型例子。
9.在解决计算机主机与打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机从该缓冲区中取出数据打印。
该缓冲区应该是一个队列结构。
10.有一棵树如下图所示,回答下列问题。
11.有一棵树如下图所示,回答下列问题。
(1)这棵树的根结点是K1;(1)结点k3的度是 2 ;(2)这棵树的叶子结点是K2,K4,K5,K7;(2)这棵树的度为 3 ;12.有一棵树如下图所示,回答下列问题。
13有一棵树如下图所示,回答下列问题。
这棵树的深度为 4 ;(1)结点K3的子女是 K5 ,K6 ; (2)结点K3的双亲结点是 K1 。
14.在一棵二叉树中,度为零的结点个数为n0,度为2的结点的个数为n2,则有n0=n2+1。
15.n (n>0)个结点的二叉树高度最大是 n ,其深度最小是⎡log 2(n+1)⎤或⎣⎦1log 2+n 。
16.n(n>0)个结点的满二叉树深度是)1(log 2+n ,叶子结点数是(n+1)/2。
阿 17.下面二叉树的中序序列是GDHABC 。
18.n (n>0)个结点的哈夫曼树中度为2的结点共 (n-1)/2 个,叶子结点共(n+1)/2个。
19.n 个顶点的有向图最多有 n*(n-1) 条边。
20.n (n>0)个顶点的连通无向图各顶点度之和最少是 2(n-1) 。
21.有6个顶点的无向图至少应有 5 条边才能确保是一个连通图。
22. n(n>0)个顶点的连通无向图至少有 n-1 条边。
23. 恰有 n(n-1) 条边的有向图称为有向完全图。
2单项选择题1.下列说法正确的是( B )A.数据元素是具有独立意义的最小标识单位B.原子类型的值不可再分解C.原子类型的值由若干个数据段组成D.结构类型的值不可再分解2.一个存储结点存放一个(B )A.数据项B.数据元素C.数据结构D.数据类型3.在数据结构中,从逻辑上可以把数据结构分成(C )A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4.线性结构是数据元素之间存在一种(D )A.一对多关系B.多对多关系C.多对一关系D.一对一关系5.算法分析的目的是(B )A.正确性和简明性B.时间复杂性和空间复杂性C.可读性和文档性D.数据复杂性和程序复杂性6.算法必须具备输入输出和(C )A.计算方法B.排序方法C.解决问题的有限运算步骤D.程序设计方法7.线性表中正确的说法是(D )A.每个元素都有一个直接前驱和一个直接后继B.线性表至少要求一个元素C.表中的元素必须按由小到大或由大到小排序D.除了第一个和最后一个元素外,其余每个元素都有且仅有一个直接前驱和一个直接后继8.线性表是具有n个(C )的有限序列A.整数B.字符C.数据元素D.数据项9.线性表采用链式存储结构时,结点的存储地址(C )A.必须是不连续的B.必须是连续的C是否连续都可以D.和头结点的存储地址相连续10.在带有头结点的单链表中插入一个新结点时不可能修改(A )A.头指针B.头结点指针域C.开始结点指针域D其它结点指针域11.相对于顺序存储结构而言,链接存储的优点是(C )A.随机存取B.节约空间C.增、删操作方便D.结点关系简单12.设线性表有n个元素,下面算法中在顺序表上实现比在链表上实现效率更高的是(A )A.输出第i(1≤i<≤n)个元素值B.交换第0个元素与第1个元素的值C. 顺序输出这n 个元素的值D. 输出与给定值x 相等的元素在线性表中的序号 13. 下列说法正确的是( A )A. 栈是一种线性表B. 栈具有先进先出特性C. 栈删除运算会引起其它元素的移动D. 栈插入运算会引起其它元素的移动14. 一个栈的入栈序列是:a,b,c,d,e, 则栈的不可能的输出序列是( C )A. EdcbaB.decbaC.dceabD.abcde15. 一个链栈的栈顶指针是topNode ,则执行出栈操作时(栈非空),用topElement 保存被删除结点的数据元素,则执行( D )A. topElement = top; top = topNode.next;B. topElement = topNode.element;C. topNode = topNode.next; topElement = topNode.element;D. topElement = topNode.element; topNode = topNode.next; 16. 一个队列的入队序列是a,b,c,d, 则队列的输出序列是( B )A. d,c,b,aB.a,b,c,dC.a,d,c,bD.c,b,a,d 17. 将递归过程转化为非递归过程需要用到( A )A.栈B.队列C.树D.图 18. 栈和队列的共同点是( C )A. 都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点 19. 树最适合用来表示( D )A. 有序数据元素B.无序数据元素C.元素之间无联系的数据D.元素之间具有分支层次关系的数据20. 一棵深度为9的满二叉树的叶结点数是( B )A. 255B.256C.511D.51221. n 个结点的满二叉树的高度是( B )A.n/2B.)1(log 2+nC.)1(log 2-nD.n 2l og 22. 按照二叉树的定义,具有3个结点的二叉树有( C )种A. 3B.4C.5D.623. 深度为5的二叉树至多有( C )个结点A. 16 B32 C.31 D.1024. 由结点A 、B 、C 构成不同的二叉树共( D )棵A. 6B.18C.36D.3025.下列说法正确的是(D )A.二叉树是度为2的无序树B.二叉树中结点只有一个孩子时无左右之分C.二叉树中必有度为2的结点D.二叉树中的一个结点最多只有两棵子树,并且有左右之分26.一棵二叉树的先序序列是ABCDEF,它可能的中序序列是(A )A.CBDAFEB.CABDEFC.DABCEFD.FCABED27.要唯一地确定一棵二叉树,只需要知道该二叉树的(C )A.前序序列B.中序序列C.中序和后序序列D.前序和后序序列28.任何一棵二叉树的叶结点在先序、中序和后序遍历中的相对次序(A )A.不发生改变B.发生改变C.不能确定D.以上都不对29.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的(B )倍A.1/2B.1C.2D.430.用邻接矩阵存储图所需的存储空间大小仅与(A )有关A.图的顶点数B.图的边数C.图的顶点数与边数之和D.图的各顶点度之和31.若存储图G的邻接矩阵是对称矩阵,则G(C )A.一定是无向图B.一定是连通无向图C.可能是无向图D.一定是有向图32.下列说法正确的是(B )A.有向图的邻接矩阵一定是非对称矩阵B.无向图的邻接矩阵一定是对称矩阵C.若图G的邻接矩阵是对称的,则G一定是无向图D.有向图的邻接矩阵一定是下三角矩阵33.已知一个图如下所示。
若从顶点a出发按深度优先搜索算法进行遍历,则可能得到的一种顶点序列为(D )A.abecdfB.acfebdC.aebfcdD.aedfcb3.解答题1.简述数据结构的逻辑结构和存储结构的区别和联系。
它们如何影响算法的设计与实现?若用结点表示某个数据元素,则结点和结点之间的逻辑关系就称为数据的逻辑结构。
数据在计算机中的存储表示称为数据的存储结构。
可见,数据的逻辑结构是反映数据之间的固有联系,而数据的存储结构是数据在计算机中的存储表示。
尽管因采用的存储结构不同,逻辑上相邻的结点,其物理地址未必相邻,但可通过结点的内部信息,找到其相邻的结点,从而保留了逻辑结构的特点。
由于采用的存储结构不同,该数据结构上的操作灵活性、算法复杂度等区别较大。
2.简述数据的运算与数据逻辑结构和存储结构之间的关系。
数据的运算定义在逻辑结构上,也就是说,一旦数据的逻辑结构确定了,就可以定义在这种逻辑结构上可以进行何种运算了。
但是,数据的运算的具体实现时依赖于数据的存储结构的。
同样的逻辑结构,可能有不同的存储结构。
那么,在不同的存储结构上实现同一个数据运算的方法也不一样。
所以,要具体实现某个运算,还要根据数据的存储结构来定。
3.试举一个应用数据结构的例子,叙述其逻辑结构、存储结构、运算这三方面的内容。
要点:说明逻辑结构、存储结构的概念,同时用自然语言例子中的逻辑结构和存储结构和运算的基本规则4.何时选用顺序表、何时选用链表作为线性表的存储结构为宜?(1)基于空间的考虑:当线性表的长度变化较大,难以估计其存储规模时,采用动态链表作为存储结构为好。
当线性表的长度变化不大,易于事先确定其大小时,为了节省存储空间,采用顺序表为好。
(2)基于时间的考虑:若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为好。
反之,对于频繁进行插入和删除的线性表,采用链表为好。
5.设二叉树如下所示,试采用顺序存储方法和链接存储方法画出它的存储结构。
bcd链式存储结构如下:6.设二叉树如下所示,试采用顺序存储方法和链式存储方法画出它的存储结构。
顺序存储结构如下:链式存储结构如下:7.设树形结构如下,请画出该树的双亲孩子链表表示。
ABDEF解:0123458.现有权值:7,16,5,28,2。
试构造这组权值的哈夫曼(Huvvman )树。
用树形表示法画出这个哈夫曼(Huvvman )树。
289.以下面数据作为叶子结点的权值构造一棵哈夫曼(Huvvman )树。
用树形表示法画出这个哈夫曼(Huvvman )树。
17,3,7,8,24,10,16,9,610.设图G=(V ,E ),V={ v0,v1,v2,v3,v4},E={<v0,v1>,<v0,v2>,<v2,v3>,<v1,v4>,<v3,v4>}。
试给出G 的邻接矩阵和邻接表。
邻接矩阵如下0 1 1 0 00 0 0 0 1 0 0 0 1 0 0 0 0 0 10 0 0 0 0邻接表如下0214311.已知一个有向图G 的顶点集合为{A,B,C,D,E},其邻接表为01234顶点表出边表(1)画出G 的图形(2)分别给出G 从A 开始的深度优先和广度优先遍历序列 (1)(2)从A 开始的深度优先序列:ABCDE从A 开始的广度优先序列:ABDEC12.设无向图G 的顶点集合为{a,b,c,d,e,f},其邻接表如下:01234顶点表边表5(1)画出G 的图形(2)分别给出G 从a 开始的深度优先和广度优先遍历序列 (1)该图的图形(2)从a 开始的深度优先序列:abdcfe从a 开始的广度优先序列:abcdef4.算法设计题1.设顺序表类型定义如下:public class AList implements ListInterface {private Object[] entry; // 线性表元素数组private int length; // 线性表当前元素的个数private static final int MAX_SIZE = 50; // 默认的线性表的最大长度public AList() {length = 0;entry = new Object[MAX_SIZE];}}请写出从顺序表中删除指定位置的元素的算法。