数据结构习题及答案
- 格式:doc
- 大小:111.35 KB
- 文档页数:49
第一章1.在数据结构中,从逻辑上可以把数据结构分为(C )A.动态结构和静态结构B。
紧凑结构和非紧凑结构C.线性结构和非线性结构D。
内部结构和外部结构● 2.在数据结构中,与所使用的计算机无关的是( A )A。
逻辑结构 B. 存储结构C。
逻辑和存储结构 D. 物理结构3。
下面程序的时间复杂度为____O(mn)_______。
for (int i=1;i〈=m; i++)for (int j=1;j〈=n;j++ )S+=i第二章线性表●链表不具备的特点是(A)A 可以随机访问任一结点(顺序)B 插入删除不需要移动元素C 不必事先估计空间D 所需空间与其长度成正比2。
不带头结点的单链表head为空的判定条件为(A ),带头结点的单链表head为空的判定条件为(B )A head==nullB head—〉next==nullC head-〉next==headD head!=null●3.在线性表的下列存储结构中,读取元素花费时间最少的是(D)A 单链表B 双链表C 循环链表D 顺序表● 4.对于只在表的首、尾两端进行手稿操作的线性表,宜采用的存储结构为(C)A 顺序表B 用头指针表示的单循环链表C 用尾指针表示的单循环链表D 单链表●5。
在一个具有n 个结点的有序单链表中插入一个新的结点,并保持链表元素仍然有序,则操作的时间复杂度为( D )A O(1)B O(log2n)C O(n2)D O(n)● 6.在一个长度为n (n〉1)的单链表上,设有头和尾两个指针,执行(B)操作与链表的长度有关A 删除单链表中第一个元素B 删除单链表中最后一个元素C 在第一个元素之前插入一个新元素D 在最后一个元素之后插入一个新元素●7。
与单链表相比,双向链表的优点之一是(D)A 插入删除操作更简单B 可以进行随机访问C 可以省略表头指针或表尾指针D 顺序访问相邻结点更容易●8。
若list是某带头结点的循环链表的头结点指针,则该链表最后那个链结点的指针域(头结点的地址)中存放的是( B )A list的地址B list的内容C list指的链结点的值D 链表第一个链结点的地址●9.若list1和list2分别为一个单链表与一个双向链表的第一个结点的指针,则( B )A list2比list1占用更多的存储单元B list1与list2占用相同的存储单元C list1和list2应该是相同类型的指针变量D 双向链表比单链表占用更多的存储单元10。
数据结构习题习题一一、选择题1、数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的(B)和运算的学科。
A.结构B.关系C.运算D.算法2、在数据结构中,从逻辑上可以把数据结构分成(C)。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.逻辑结构和存储结构3、线性表的逻辑顺序和存储顺序总是一致的,这种说法(B)。
A.正确B.不正确C.无法确定D.以上答案都不对4、算法分析的目的是(C)。
A.找出算法的合理性B.研究算法的输人与输出关系C.分析算法的有效性以求改进D.分析算法的易懂性二、填空题1、数据是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,数据是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
例如,数学中所用到的整数和实数,文本编辑所用到的字符串等。
2、数据元素是数据的基本单位,有些情况下也称为元素、结点、顶点、记录等。
3、数据项是数据不可分割的最小单元,是具有独立含义的最小标识单位。
例如构成一个数据元素的字段、域、属性等都可称之为_数据项。
4、简而言之,数据结构是数据之间的相互关系,即数据的组织形式。
5、数据的逻辑结构是指数据之间的逻辑关系。
逻辑结构是从逻辑关系上描述数据,它与具体存储无关,是独立于计算机的。
因此逻辑结构可以看作是从具体问题抽象出来的数学模型。
6、数据的存储结构指数据元素及其关系在计算机存储器内的表示。
存储结构是逻辑结构在计算机里的实现,也称之为映像。
7、数据的运算是指对数据施加的操作。
它定义在数据的逻辑结构之上,每种逻辑结构都有一个数据的运算。
常用的有:查找、排序、插人、删除、更新等操作。
8、数据逻辑结构可以分为四种基本的类型,集合结构中的元素除了仅仅只是同属于一个集合_,不存在什么关系。
9、数据逻辑结构的四种基本类型中,线性结构_中的元素是一种一对一的关系,这种结构的特征是:若结构是非空集,则有且只有一个开始结点和一个终端结点,并且所有结点最多只能有一个直接前驱和一个直接后继。
数据结构习题及答案第1章算法一、选择题1.算法的时间复杂度是指()。
A)执行算法程序所需要的时间B)算法程序中的指令条数C)算法执行过程中所需要的基本运算次数D)算法程序的长度2.算法的空间复杂度是指()。
A)算法程序的长度B)算法程序所占的存储空间C)算法执行过程中所需要的存储空间D)算法程序中的指令条数3.下面()的时间复杂度最好(即执行时间最短)。
logn)O()O(n ) B)A2logn2 ) D)O(n)C)O(n24.下面累加求和程序段的时间复杂度为()。
int sum(int a[],int n){int i, s=0;for (i=0;i<n;i++)< p="">s+=a[i];return s;}logn ) )O(A)O(1 ) B22))O(nC)O(n ) D中的算法,c[][]相加的结果存放到b[][]n阶矩阵5.下面是将两个n阶矩阵a[][]与。
该算法的时间复杂度为()void matrixadd(int a[][],intb[][],c[][],int n){int i,j;for (i=0;i<n;i++)< p="">for(j=0;j<n;j++)< p="">c[i][j]=a[i][j]+b[i][j];}nlog) )O(1 ) B)O(A22) )O(nO( n ) DC)。
6.下面程序段的时间复杂度为() 1int i=0,s1=0,s2=0;while(i<n)< p="">{if(i%2)s1+=i;elses2+=i;i++;}nlog) O(A)O(1 ) B)22) )O(nC)O(n ) D )。
7.下面程序段的时间复杂度为(int prime(int n){int i=1;int x=(int)sqrt(n);while(i<=x){i++;if(n%i==0)break;}if(i>x)return 1;elsereturn 0;}nlog) O(O(1 ) BA))2n) O()CO(n ) D))下面程序段的时间复杂度为(8.int fun(int n){int i=1,s=1;while(s<n)< p="">{i++;s+=i;}return i;}nlog)O(n/2) BA))O(2 2n) )O(C)O(n ) D9.下面程序段的时间复杂度为()int i,j,m,n,a[][];for(i=0;i<m;i++)< p="">for(j=0;j<n;j++)< p="">a[i][j]=i*j;22) )O(nA)O(m) BO(m+n) )C)O(m*n ) D )10. 下面程序段的时间复杂度为(int sum1(int n){int i,p=1,s=0;for(i=1;i<=n;i++){p*=i;s=s+p;}return s;}nlog) )O(A)O(1 ) B22)O(n ) D)O(nC)二、填空题复杂度。
第一章概论一、填空题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象 以及它们之间的 关系 和运算等的学科。
2. 数据结构被形式地定义为(D, R ),其中D 是 数据元素 的有限集合,R 是D 上的 关系 有限集合。
3. 数据结构包括数据的 逻辑结构 、数据的 存储结构 和数据的 运算 这三个方面的内容。
4. 数据结构按逻辑结构可分为两大类,它们分别是 线性结构 和 非线性结构 。
5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
6. 在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点 没有后续结点,其余每个结点有且只有1个后续结点。
7. 在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续结点数可以任意多个 。
8. 在图形结构中,每个结点的前驱结点数和后续结点数可以 任意多个 。
9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序 、 链式 、 索引 和 散列 。
10. 数据的运算最常用的有5种,它们分别是插入 、 删除、修改、 查找 、排序。
11. 一个算法的效率可分为 时间 效率和 空间 效率。
二、单项选择题( B )1. 非线性结构是数据元素之间存在一种:A )一对多关系B )多对多关系C )多对一关系D )一对一关系( C )2. 数据结构中,与所使用的计算机无关的是数据的 结构;A) 存储 B) 物理 C) 逻辑 D) 物理和存储( C )3. 算法分析的目的是:A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性( A )4. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性 B) 正确性和简明性C) 可读性和文档性 D) 数据复杂性和程序复杂性( C )5. 计算机算法指的是:A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法( B )6. 计算机算法必须具备输入、输出和 等5个特性。
《数据结构》练习题一、解答题(共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之间的元素进行快速排序的分区。
数据结构习题及参考答案部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑数据结构习题及参考答案一、判断下列叙述的对错。
<1)线性表的逻辑顺序与物理顺序总是一致的。
<2)线性表的顺序存储表示优于链式存储表示。
<3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
<4)二维数组是其数组元素为线性表的线性表。
<5)每种数据结构都应具备三种基本运算:插入、删除和搜索。
二、设单链表中结点的结构为typedef struct node { file://链表结点定义ElemType data; file://数据struct node * Link; file://结点后继指针} ListNode;<1)已知指针p所指结点不是尾结点,若在*p之后插入结点* s,则应执行下列哪一个操作?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;<2)非空的循环单链表first的尾结点<由p所指向)满足:A. p->link == NULL;B. p == NULL;C. p->link == first;D. p == first;三、设有一个顺序栈S,元素s1, s2, s3, s4, s5, s6依次进栈,如果6个元素的出栈顺序为s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?b5E2RGbCAP四、一棵具有n个结点的理想平衡二叉树<即除离根最远的最底层外其他各层都是满的,最底层有若干结点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示<注意n可能为0)?p1 EanqFDPw五、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。
数据结构练习题(一)一、单选题1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进行插入运算时( )。
A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.?4.以下数据结构中( )是非线性结构。
A. 队列B. 栈C. 线性表D. 二叉树5.设有一个二维数组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.6966.树最适合用来表示( )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据7.二叉树的第k层的结点数最多为( )。
A.2k-1 +1 D. 2k-18.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )。
<A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,39.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有()个。
A.1 B.2 C.3 D.410.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
二、填空题1.通常从四个方面评价算法的质量:_________、_________、_________和_________。
2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。
3.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数为__________个,树的深度为___________,树的度为_________。
第1章算法一、选择题1.算法的时间复杂度是指()。
A)执行算法程序所需要的时间B)算法程序中的指令条数C)算法执行过程中所需要的基本运算次数D)算法程序的长度2.算法的空间复杂度是指()。
A)算法程序的长度B)算法程序所占的存储空间C)算法执行过程中所需要的存储空间D)算法程序中的指令条数3.下面()的时间复杂度最好(即执行时间最短)。
logn)O()O(n ) B)A2logn2 ) D)O(n)C)O(n24.下面累加求和程序段的时间复杂度为()。
int sum(int a[],int n){int i, s=0;for (i=0;i<n;i++)s+=a[i];return s;}logn ) )O(A)O(1 ) B22))O(nC)O(n ) D中的算法,c[][]相加的结果存放到b[][]n阶矩阵5.下面是将两个n阶矩阵a[][]与。
该算法的时间复杂度为()void matrixadd(int a[][],intb[][],c[][],int n){int i,j;for (i=0;i<n;i++)for(j=0;j<n;j++)c[i][j]=a[i][j]+b[i][j];}nlog) )O(1 ) B)O(A22) )O(nO( n ) DC)。
6.下面程序段的时间复杂度为() 1int i=0,s1=0,s2=0;while(i<n){if(i%2)s1+=i;elses2+=i;i++;}nlog) O(A)O(1 ) B)22) )O(nC)O(n ) D )。
7.下面程序段的时间复杂度为(int prime(int n){int i=1;int x=(int)sqrt(n);while(i<=x){i++;if(n%i==0)break;}if(i>x)return 1;elsereturn 0;}nlog) O(O(1 ) BA))2n) O()CO(n ) D))下面程序段的时间复杂度为(8.int fun(int n){int i=1,s=1;while(s<n){i++;s+=i;}return i;}nlog)O(n/2) BA))O(2 2n) )O(C)O(n ) D9.下面程序段的时间复杂度为()int i,j,m,n,a[][];for(i=0;i<m;i++)for(j=0;j<n;j++)a[i][j]=i*j;22) )O(nA)O(m) BO(m+n) )C)O(m*n ) D )10. 下面程序段的时间复杂度为(int sum1(int n){int i,p=1,s=0;for(i=1;i<=n;i++){p*=i;s=s+p;}return s;}nlog) )O(A)O(1 ) B22)O(n ) D)O(nC)二、填空题复杂度。
1.算法复杂度主要包括时间复杂度和2/ n ,其数量级表示为。
+2n+5 2.一个算法的时间复杂度的计算式为 ( 3n)读取一a[n]中顺序查找出一个最大值元素的平均时间复杂度为,3.从一维数组。
中任一元素的时间复杂度为个二维数组b[m][n]语句的执行次数,p*=j 4.在下面程序段中,s = s+p语句的执行次数为。
为,该程序段的时间复杂度为int i=0, s=o;while(++i <=n){int p=1;for(int j=1; j<=i ; j++ )p*=j ;s=s+p ;}通常用平均性态分析和两种方式来确定一个算法的工作量。
5.简答题三、3.什么是算法?算法的基本特征是什么?4.35.算法的两种基本要素是什么?6.递归是算法的基本方法之一,其基本思想是什么?7.算法的描述方法有多种,试说出任意三种方法。
四、编写出求下列问题的算法1.比较两个整型数据a1与a2的大小,对于a1 > a2、a1 == a2、a1< a2这三种不同情况应分别返回“>”、“=”、“<”字符。
2.求一维double型数组a[n]中的所有元素之乘积。
3.假定一维整型数组a[n]中的每个元素值x均在[0,200]区间内,分别统计出落在0≤x< 20、20≤x<50、50≤x<80、80≤x<130、13 ≤x≤200各区间内的元素个数。
参考答案一、单选题1.C2.C3.B4.C5.D6.C7.D8.D9.C 10.C二、填空题1. 空间2. O(n)2) O(nn(n+1)/2,3.O(n),O(1) 4. n,最坏情况复杂性5.三、简答题 1. 答案:所谓算法是指解题方案的准确而完整的描述。
4)拥有足够的情报。
确定性;3)有穷性;答案:算法的基本特征为:2. 1)可行性;2)答案:算法通常由两种基本要素组成;一是对数据对象的运算和操作;二是算法的3.控制结构。
答案:人们在解决一些复杂问题时,为了降低问题的复杂程度,一般总是将问题逐4.实际上并没有对问题这种将问题逐层分解的过程,层分解,最后归结为一些最简单的问题。
再沿着原来分解的逆过程逐步进行综而只是当解决了最后那些最简单的问题后,进行求解。
合,这就是递归的基本思想。
5.答案:一个算法可以用多种方式来描述,如自然语言、程序语言、流程图等。
四、算法设计的大小。
a1比较两个整型数据与a21.char compare(int a1,int a2){if(a1>a2)return >;elaseif(a1==a2)=;return4elasereturn <;}2.求一维double型数组a[n]中的所有元素之乘积。
double product(dluble a[],int n){double p=1;for(int i=0;i< n;i++)p=p*a[i];return p;}3.统计数组a[n]中的每个元素值x分别落在0≤x<20、20≤x<50、50≤x< 80、80≤x<130、130≤x≤200各区间内的元素个数。
int count(int a[],int n,int c[5]) //用c[5]保存统计结果{int d[5]={20,50,80,130,201}; //用d[5]保存各统计区间上限int i,j;for(i=0;i<n;i++)c[i]=0;for(i=0;i<n;i++){if(a[i]<0; || a[i]>200)return 0; //数组中数据有错,统计失败for(j=0;j< 5;j++)if(a[i]<d[j]) break; //查找a[i]所在区间c[j]++; //使统计相应区间的元素数增1}return 1; //表示统计成功}5第2章数据结构的基本概念一、单选题1.一个数据结构可形象地表示成B=(D,R),其中D是(①)的有限集合,R是D上的(②)有限集合。
① A)算法 B)数据元素C)数据操作 D)逻辑结构② 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)紧凑结构和非紧凑结构6C)线性结构和非线性结构 D)内部结构和外部结构12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。
A)数据元素具有同一特点B)不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致C)每个数据元素都一样D)数据元素所包含的数据项的个数要相等二、填空题1.数据的基本单位是,数据的最小单位是。
2. 一种数据的逻辑结构,根据需要可以表示成顺序、、和散列四种基本存储结构。
3. 根据数据结构中各数据元素之间前后件关系的复杂程度,可将数据分为两大类型。
4. 在一个线性结构中插入或删除任何一个结点后还应是。
5.一种数据结构的元素集合为D,它在D上的二元关系R为:D={a,b,c,d,e,f,g,h}R={<a,b>,<b,c>,<c,d>,<d,e>,<e,f>,<f,g>,<g,h>}则该数据结构具有结构。
6.一种数据结构的元素集合为D,它在D上的二元关系R为:D={a,b,c,d,e,f,g,h}R={<d,b>,<d,g>,<b,a>,<b,c>,<g,e>,<g,h>,<e,f>}则该数据结构具有结构。
7.数据的逻辑结构分为线性结构和非线性结构,其中的非线性结构有两种基本类型。
三、简答题1.数据结构主要研究的三个问题是什么?2.一个数据结构应包含两方面的信息是什么?3.简述数据存储结构中的顺序存储方式。
4.简述数据存储结构中的链式存储方式参考答案一、单选题1.①B,②D2. C3.D4.A5.C6.A7.C 8.B 9.B 10.D 11.C 12.B二、填空题1. 数据元素,数据项2. 链式、索引3. 线性结构与非线性结构4. 线性结构5. 线性6.非线性(或树形)77. 树和图三、简答题1.答案:数据结构主要研究的三个问题是:①数据的逻辑结构,②数据的存储结构,③对各种数据结构进行的运算。