数据结构作业五
数据结构第五章 查找 答案
数据结构与算法上机作业第五章查找一、选择题1、若构造一棵具有n个结点的二叉排序树,在最坏情况下,其高度不超过 B 。
A. n/2B. nC. (n+1)/2D. n+12、分别以下列序列构造二叉排序数(二叉查找树),与用其他3个序列所构造的结果不同的是 C :A. (100, 80, 90, 60, 120, 110, 130)B. (100, 120, 110, 130, 80, 60, 90)C. (100, 60, 80, 90, 120, 110, 130)D. (100, 80, 60, 90, 120, 130, 110)3、不可能生成下图所示的二叉排序树的关键字的序列是 A 。
A. 4 5 3 1 2B. 4 2 5 3 1C. 4 5 2 1 3D. 4 2 3 1 54、在二叉平衡树中插入一个结点造成了不平衡,设最低的不平衡点为A,并已知A的左孩子的平衡因子为0,右孩子的平衡因子为1,则应作 C 型调整使其平衡。
A. LLB. LRC. RLD. RR5、一棵高度为k的二叉平衡树,其每个非叶结点的平衡因子均为0,则该树共有 C 个结点。
A. 2k-1-1B. 2k-1+1C. 2k-1D. 2k+16、具有5层结点的平衡二叉树至少有 A 个结点。
A. 12B. 11C. 10D. 97、下面关于B-和B+树的叙述中,不正确的是 C 。
A. B-树和B+树都是平衡的多叉树B. B-树和B+树都可用于文件的索引结构C. B-树和B+树都能有效地支持顺序检索D. B-树和B+树都能有效地支持随机检索8、下列关于m阶B-树的说法错误的是 D 。
A. 根结点至多有m棵子树B. 所有叶子结点都在同一层次C. 非叶结点至少有m/2(m为偶数)或m/2+1(m为奇数)棵子树D. 根结点中的数据是有序的9、下面关于哈希查找的说法正确的是 C 。
A. 哈希函数构造得越复杂越好,因为这样随机性好,冲突小B. 除留余数法是所有哈希函数中最好的C. 不存在特别好与坏的哈希函数,要视情况而定D. 若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单地将该元素删去即可10、与其他查找方法相比,散列查找法的特点是 C 。
数据结构作业
6.45 编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
6.46 编写复制一棵二叉树的非递归算法。
6.59 编写算法完成下列操作:无重复地输出以孩子兄弟链表存储的树T中所有的边(这里的边是指树T本身的分支,而不是孩子兄弟链表所形成的二叉树的分支)。输出的形式为(k1, k2), ..., (ki, kj), ..., 其中,ki和kj为树结点中的结点标识。
1.20试编写算法求一元多项式 的值Pn(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。本题的输入为ai(i=0, 1,…, n)、x0和n,输出为Pn(x0)。
第二章线性表
2.11设顺序表va中的数据元素非递减有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
注:根据同学们的要求,将作业量从六道题减少到三道题,希望同学们能及时完成。
第五章数组和广义表
5.21 假设稀疏矩阵A和B均以三元组顺序表作为存储结构。试写出矩阵相加的算法,另设三元组C存放结果矩阵。
5.26 试编写一个以三元组形式输出用十字链表表示的稀疏矩阵中非零元素及其下标的算法。
5.33 试编写递归算法,输出广义表中所有原子项及其所在的层次。
第十二章 文件
12.10假设某个有3000张床位的旅店需建立一个便于管理的文件,每个记录是一个旅客的身份和投宿情况。其中旅客身份证号(15位十进制数字)可作为主关键字,此外还需建立按姓名、投宿日期、从哪来等次关键字项索引。请为此文件确定一种组织方式(如:主文件如何组织,各次关键字项索引如何建立等
第十章 排序
10.23 试以L.r[k+1]作为监视哨改写直接插入排序算法。其中,L.r[1...k]为待排记录且k<MAXSIZE。
数据结构与算法 第5次在线作业(第十章第七节)
单选题1.从原理上讲,折半查找法要求查找表中各元素的键值必须是____∙ A 递增或递减∙ B 递增∙ C 递减∙ D 无序单选题2.关于判定树,下列说法不正确的是____∙ A 判定树是对有序序列进行二分查找得到的树∙ B n个结点的判定树的深度为[log2n]+1∙ C 判定树的叶子结点都在同一层∙ D 判定树除去最后一层结点以后是满二叉树或空二叉树单选题3.在顺序表{2、5、7、10、14、15、18、23、35、41、52}中,用二分法查找关键码12需做____次关键码比较∙ A 2∙ B 3∙ C 4∙ D 5单选题4.对线性表进行二分查找时,要求线性表必须____ ∙ A 以顺序方式存储∙ B 以顺序方式存储且元素有序∙ C 以链式方式存储∙ D 以链式方式存储且元素有序单选题5.折半查找算法的时间复杂度是____∙ A O(n2)∙ B O(n)∙ C O(log2n)∙ D O(nlog2n)单选题6.若用二分查找法取得的中间位置元素键值大于被查找值,说明被查找值位于中间值的前面,下次的查找区间为从原开始位置至____∙ A 该中间位置∙ B 该中间位置-1∙ C 该中间位置+1∙ D 该中间位置/2单选题7.对包含N个元素的散列表进行查找,平均查找长度____∙ A 为O(log2N)∙ B 为O(N)∙ C 不直接依赖于N∙ D 上述三者都不是单选题8.若构造一棵具有n个结点的二叉排序树,最坏的情况下其深度不会超过____∙ A n/2∙ B n∙ C (n+1)/2∙ D n+1单选题9.分别以下列序列构造二叉排序树,则与其它几个序列构造的结果不同的是____∙ A (80,70,60,75,90,85,100,10)∙ B (80,90,85,70,60,10,75,100)∙ C (80,90,70,85,10,60,75,100)∙ D (80,90,100,70,85,60,10,75)单选题10.如果某二叉树的左右子树的高度差的绝对值不大于1,则一定是平衡二叉树∙ A 正确∙ B 不正确单选题11.AVL树的任何子树都是AVL树。
数据结构》作业题答案
参考答案第一章、绪论一、选择题1 B;2 A; 3 B;4 C ;5 C; 6 B;7 C;8 C;9 D;10 B。
二、填空题1、存储;2、无,1,无,1;3、前驱,1,后继,任意多个;4、一对一,一对多,多对多;5、时间复杂度,空间复杂度;6、集合,线性结构,树形结构,图形结构;7、顺序结构,链式结构,索引结构,散列结构;8、顺序。
三、问答题与算法题1、3 ;2、T1 ( n ) = 5n 2 -O ( n ) ; T2 ( n ) = 3 n 2 + O ( n ) ; T3 ( n ) = 8 n 2 + O(log n) ;T4 ( n ) = 1.5 n 2 + O ( n ) 。
T4 ( n ) 较优,T3 ( n )较劣。
3、见课本。
第二章线性表一、选择题1C;2A;3D;4B;5D;6B;7C;8B;9A;10C;11D;12D;13C;14C.二、填空题1、O ( 1 ), O ( n );2、单链表,双链表;3、地址,指针;4、4,2;5、便于访问尾结点和头结点;6、前驱;7、L->next== L且L->prior== L;8、顺序。
三、问答题与算法题1、头指针:结点或头结点的指针变量。
其作用是存放第一个结点或头结点的地址,从头指针出发可以找到链表中所有结点的信息。
头结点:是附加在链表的第一个结点之前的一个特殊结点,其数据域一般不存放信息。
其作用是为了简化运算,将空表与非空表统一起来,将第一个结点与其他结点的处理统一起来。
首结点:是链表的第一个结点。
2、(1)基于空间的考虑。
当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。
(2)基于时间的考虑。
若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。
2020年国家开放大学电大数据结构题库
数据结构课程平时作业1一. 单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和运算等的学科。
①A. 操作对象 B. 计算方法 C. 逻辑存储 D. 数据映象②A. 结构 B. 关系 C. 运算 D. 算法2.数据结构被形式地定义为(K, R), 其中K是①的有限集合, R是K上的②的有限集合。
①A. 算法 B. 数据元素 C. 数据操作 D. 逻辑结构3.②A. 操作 B. 映象 C. 存储 D. 关系A.在数据结构中, 从逻辑上可以把数据结构分成( )。
动态结构和静态结构 B. 紧凑结构和非紧凑结构C. 线性结构和非线性结构D. 内部结构和外部结构4.线性结构是数据元素之间存在一种:A)一对多关系B)多对多关系C)多对一关系D)一对一关系5.数据结构中, 与所使用的计算机无关的是数据的结构;A) 存储B) 物理C) 逻辑D) 物理和存储二.填空题(将正确的答案填在相应的空中)1. 在线性结构中, 第一个结点①前驱结点, 其余每个结点有且只有②个前驱结点;最后一个结点③后续结点, 其余每个结点有且只有④个后续结点。
2. 在树形结构中, 树根结点没有①结点, 其余每个结点有且只有②个前驱结点;叶子结点没有③结点, 其余每个结点的后续结点可以④。
3. 在图形结构中, 每个结点的前驱结点数和后续结点数可以①。
4.线性结构中元素之间存在①关系, 树形结构中元素之间存在②关系, 图形结构中元素之间存在③关系。
5.数据结构包括数据的、数据的和数据的这三个方面的内容。
6. 下面程序段的时间复杂度是①。
for(i=0;i<n;i++)for(j=0;j<m;j++)A[i][j]=0;7. 下面程序段的时间复杂度是①。
S=0;for(i=0;i<n;i++)for(j=0; j<n; j++)s+=b[i][j];sum=s;三、简答题1.数据结构是一门研究什么内容的学科?2.数据元素之间的关系在计算机中有几种表示方法?各有什么特点?3.设有数据逻辑结构S=(D,R), 试按题所给条件画出这些逻辑结构的图示, 并确定相对于关系R, 哪些结点是开始结点, 哪些结点是终端结点?D={d1,d2,d3,d4}R={(d1,d2),(d2,d3),(d3,d4) }部分参考答案一、单选题二、A B 2. B D 3. C 4. D 5. C三、填空题1.无, 1, 无, 12.前驱, 1个, 后继, 多个3.多个4.一对一, 一对多, 多对多5.逻辑结构、物理结构、数据运算6. O(n*m)7. O(n*n)三、简答题1.略见课件2.略3. d1( d2(d3(d4 线性结构数据结构课程平时作业2一. 单项选择题1.线性表L=(a1, a2,…,a n),下列说法正确的是()。
《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)
《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)【第一章绪论】1. 数据结构是计算机科学中的重要基础知识,它研究的是如何组织和存储数据,以及如何通过高效的算法进行数据的操作和处理。
本章主要介绍了数据结构的基本概念和发展历程。
【第二章线性表】1. 线性表是由一组数据元素组成的数据结构,它的特点是元素之间存在着一对一的线性关系。
本章主要介绍了线性表的顺序存储结构和链式存储结构,以及它们的操作和应用。
【第三章栈与队列】1. 栈是一种特殊的线性表,它的特点是只能在表的一端进行插入和删除操作。
本章主要介绍了栈的顺序存储结构和链式存储结构,以及栈的应用场景。
2. 队列也是一种特殊的线性表,它的特点是只能在表的一端进行插入操作,而在另一端进行删除操作。
本章主要介绍了队列的顺序存储结构和链式存储结构,以及队列的应用场景。
【第四章串】1. 串是由零个或多个字符组成的有限序列,它是一种线性表的特例。
本章主要介绍了串的存储结构和基本操作,以及串的模式匹配算法。
【第五章数组与广义表】1. 数组是一种线性表的顺序存储结构,它的特点是所有元素都具有相同数据类型。
本章主要介绍了一维数组和多维数组的存储结构和基本操作,以及广义表的概念和表示方法。
【第六章树与二叉树】1. 树是一种非线性的数据结构,它的特点是一个节点可以有多个子节点。
本章主要介绍了树的基本概念和属性,以及树的存储结构和遍历算法。
2. 二叉树是一种特殊的树,它的每个节点最多只有两个子节点。
本章主要介绍了二叉树的存储结构和遍历算法,以及一些特殊的二叉树。
【第七章图】1. 图是一种非线性的数据结构,它由顶点集合和边集合组成。
本章主要介绍了图的基本概念和属性,以及图的存储结构和遍历算法。
【总结】1. 数据结构是计算机科学中非常重要的一门基础课程,它关注的是如何高效地组织和存储数据,以及如何通过算法进行数据的操作和处理。
本文对《数据结构》第二版严蔚敏的课后习题作业提供了参考答案,涵盖了第1-7章的内容。
数据结构第4-5章作业及答案
数据结构第4-5章作业及答案⼀、填空题1. 不包含任何字符(长度为0)的串称为空串;由⼀个或多个空格(仅由空格符)组成的串称为空⽩串。
2. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的位置为3。
3. ⼦串的定位运算称为串的模式匹配;被匹配的主串称为⽬标串,⼦串称为模式。
4、若n为主串长,m为⼦串长,则串的古典(朴素)匹配算法最坏的情况下需要⽐较字符的总次数为(n-m+1)*m。
5、假设有⼆维数组A6×8,每个元素⽤相邻的6个字节存储,存储器按字节编址。
已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为288 B ;末尾元素A57的第⼀个字节地址为1282 ;若按⾏存储时,元素A14的第⼀个字节地址为(8+4)×6+1000=1072 ;若按列存储时,元素A47的第⼀个字节地址为(6×7+4)×6+1000)=1276 。
(注:数组是从0⾏0列还是从1⾏1列计算起呢?由末单元为A57可知,是从0⾏0列开始!)6、设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为8950 。
答:不考虑0⾏0列,利⽤列优先公式:LOC(a ij)=LOC(a c1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L 得:LOC(a32,58)=2048+[(58-1)* (60-1+1)+32-1]]*2=89507、三元素组表中的每个结点对应于稀疏矩阵的⼀个⾮零元素,它包含有三个数据项,分别表⽰该元素的⾏下标、列下标和元素值。
8、⼆维数组A[10][20]采⽤列序为主⽅式存储,每个元素占10个存储单元,且A[0][0]的存储地址是2000,则A[6][12]的地址是32609、已知⼆维数组A[20][10]采⽤⾏序为主⽅式存储,每个元素占2个存储单元,并且A[10][5]的存储地址是1000,则A[18][9]的存储地址是 116810、⼴义表((a,b),c,d)的表头是(a,b) ,表尾是 (c,d)11、⼴义表((((a),b),c),d)的表头是(((a),b),c) ,表尾是(d)12、已知⼆维数组A[10][20]采⽤⾏序为主⽅式存储,每个元素占2个存储单元,并且A[0][0]的存储地址是1024, 则A[6][18]的地址是130013、若串的长度不能确定,可采⽤动态存储结构,为串值分配⼀个存储空间,同时建⽴⼀个串的描述⼦以指⽰串值的长度和串在存储空间中的位置,称该结构为堆/堆结构14、稀疏矩阵⼀般的压缩存储⽅法有两种,即三元组表和⼗字链表。
200721数据结构 作业(高起专、高起本)
比较(
)个元素结点。
A、
B、n
C、
D、
20、设单链表中指针 p 指向结点 m,若要删除 m 之后的结点(若存在),则需修改指针的操作
为(
)。
A、
B、
C、
D、
21、在(
)运算中,使用顺序表比链表好。
A、插入
B、删除
C、根据序号查找
D、根据元素值查找
22、在一个具有 n 个结点的有序单链表中插入一个新结点并保持该表有序的时间复杂度
第 2 页 共 20 页 在您完成作业过程中,如有疑难,请登录学院网站“辅导答疑”栏目,与老师进行交流讨论!
C、一个无限序列,可以为空
D、一个无限序列,不可以为空
18、在一个长度为 n 的顺序表中删除第 i 个元素
时,需向前移动(
)个元素。
A、
B、
C、
D、i
19、从一个具有 n 个结点的单链表中查找其值等于 x 的结点时,在查找成功的情况下,需平均
( )个。
第 6 页 共 20 页 在您完成作业过程中,如有疑难,请登录学院网站“辅导答疑”栏目,与老师进行交流讨论!
A、15
B、16
C、17
D、47
48、设 n , m 为一棵二叉树上的两个结点,在中序遍历序列中 n 在 m 前的条件是( )。
A、n 在 m 右方
B、n 在 m 左方
C、n 是 m 的祖先
D、求串长
6、二维数组 M 的成员是 6 个字符(每个字符占一个存储单元)组成的串,行下标 i 的
范围从 0 到 8,列下标 j 的范围从 1 到 10,则存放 M 至少需要(
)个字节。
A、90
B、180
数据结构作业答案(大连理工大学)
作业1. 线性表编程作业:1.将顺序表逆置,要求用最少的附加空间。
参考答案#include <>#include <>#include <>#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;typedef struct{ ElemType *elem;int length;int listsize;}SqList;立单链表");printf("2.取元素值");printf("3.查找\n");printf("4.插入");printf("5.删除");printf("6.显示\n");printf("7.删除大于mink且小于maxk的元素值");printf("8.就地升序排序\n");printf("9.就地逆置");printf("a.有序表插入");printf("q.退出\n");printf("\n请选择操作:");fflush(stdin);scanf("%c",&choice);switch(choice){case '1': printf("请输入单链表中结点个数:");scanf("%d",&n);Create_L2(L,n);break;case '2': printf("请输入元素位序:");scanf("%d",&i);GetElem_L(L,i,e);printf("元素值为:%d\n",e);break;case '3': printf("请输入要查找的元素:");scanf("%d",&e);if(dlbcz(L,e))printf("查找成功!");elseprintf("查找失败。
数据结构的作业
第五章作业: 第五章作业: 1.假设有二维数组 假设有二维数组a:array[1..6,0..7] of elemtp; 每个数据元 假设有二维数组 素占6个字节 存储器按字节编址 的基地址为1000,则: 素占 个字节,存储器按字节编址。a的基地址为 个字节 存储器按字节编址。 的基地址为 则 (1) 数组 的体积; 数组a的体积 的体积; (2)数组 的最后一个元素的第一个字节的地址; 数组a的最后一个元素的第一个字节的地址 数组 的最后一个元素的第一个字节的地址; (3)按行存储时,a[2,4]的第一个字节的地址; 按行存储时, 的第一个字节的地址; 按行存储时 的第一个字节的地址 (4)按列存储时,a[5,7]的第一个字节的地址; 按列存储时, 的第一个字节的地址; 按列存储时 的第一个字节的地址
7.写出下列各树的先根序列 后根序列 并且画出对应的二 写出下列各树的先根序列,后根序列 写出下列各树的先根序列 后根序列,并且画出对应的二 叉树. 叉树 A A A A B C D B C B C I 8.画出第 题的森林相应的二叉树 画出第7题的森林相应的二叉树 画出第 题的森林相应的二叉树. 9.画出和下列已知序列对应的树 画出和下列已知序列对应的树T: 画出和下列已知序列对应的树 树的先根次序访问序列为:GFKDAIEBCHJ,而且 而且 树的先根次序访问序列为 树的后根次序访问序列为:DIAEKFCJHBG。 。 树的后根次序访问序列为 E F J G H K
3.用单链表实现 用单链表实现Locate(L,x)函数。(可参考 函数。(可参考P26算法 算法2.5) 用单链表实现 函数。(可参考 算法 4.上机题:设单链表Va中的数据元素递增有序。试编 上机题:设单链表 中的数据元素递增有序 中的数据元素递增有序。 上机题 写程序,将数据X插入单链表 插入单链表Va, 写程序,将数据 插入单链表 ,要求插 入后保持该表的有序性。 入后保持该表的有序性。 5.写出双向链表删除第i个结点的算法 5.写出双向链表删除第i个结点的算法。 写出双向链表删除第 个结点的算法。 6.写出求双向循环链表长度的算法。(注:头结点 写出求双向循环链表长度的算法。(注 写出求双向循环链表长度的算法。( 不算) 不算)
数据结构各章作业题目
第一章作业一、选择题1.被计算机加工的数据元素不是孤立的,它们彼此之间一般存在某种关系,通常把数据元素之间的这种关系称为( ).A。
规则B。
结构 C. 集合 D. 运算2.在Data_Structure=(D,S)中,D是()的有限集合。
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.一个递归算法必须包括( )A。
递归部分 B. 终止条件和递归部分C。
迭代部分 D. 终止条件和迭代部分13.算法的时间复杂度与()有关。
A. 问题规模B. 源程序长度C. 计算机硬件运行速度D. 编译后执行程序的质量二、指出下列各算法的功能并求出其时间复杂度。
(1)int Prime(int n){int i=2,x=(int)sqrt(n); //sqrt(n)为求n的平方根while(i<=x){if(n%i==0)break;i++;}if(i〉x)return 1;else return 0;}(2)int sum1(int n){int p=1,s=0;for(int i=1;i<=n;i++){p*=i;s+=p;}return s;}(3)int sum2(int n){int s=0;for(int i=1;i〈=n;i++){int p=1;for(int j=1;i〈=i;j++) p*=j;s+=p;}return s;}(4)int fun(int n){int i=1,s=1;while(s<n) s+=++i;return i;}(5)void mtable(int n){for(int i=1;i〈=n;i++){for(int j=i;j<=n;j++)cout<〈i〈<"*"<<j〈<"=”〈〈setw(2)<〈i*j<<" ”;cout<<endl;}}第二章作业 一、选择题1. 在线性表中的每一个表元素都是不可再分的( )A 。
数据结构作业
第二次作业一、选择题1、设有编号为1, 2, 3, 4的4辆列车,顺序进入一个栈结构的站台,下列不可能的出栈顺序为D。
A. 1234B. 1243C. 1324D. 14232、4个元素按A, B, C, D顺序进入S栈,执行两次Pop(S, x)运算后,栈顶元素的值是B 。
A. AB. BC. CD. D3、从一个栈顶指针为top的链栈中删除一个结点时,用x保存被删除的结点,应执行下列A 命令。
A. x=top; top=top->next;B. top=top->next; x=top->data;C. x=top->data;D. x=top->data; top=top->next;4、向顺序栈中输入元素时 A 。
A. 先存入元素,后移动栈顶指针B. 先移动栈顶指针,后存入元素C. 谁先谁后无关紧要D. 同时进行5、设有一个顺序栈,元素A, B, C, D, E, F依次进栈,如果6个元素出栈的顺序是B, D, C, F, E, A,则栈的容量至少为A。
A. 3B. 4C. 5 6. 66、设已将元素A, B, C依次入栈,元素D正等待进栈。
那么下列4个序列中不可能出现的出栈顺序为A。
A. CADBB. CBDAC. CDBAD. DCBA7、栈和队列的相同之处是C。
A.元素的进出满足先进后出B.元素的进出满足后进先出C.只允许在端点进行插入和删除操作D.无共同点8、设栈S 和队列Q 的初始状态为空,元素e1,e2,e3,e4,e5 和e6 依次通过栈,一个元素出栈后即进入队列Q,若6 个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈S 的容量至少应该是B。
A. 6B. 4C. 3D. 29、队列通常采用的两种存储结构是( A)。
A. 顺序存储结构和链式存储结构B.散列方式和索引方式C. 链表存储结构和线性存储结构D.线性存储结构和非线性存储结构10、循环队列SQ队满的条件是B。
北京大学2016年秋季学期《数据结构》课程作业【答案】
树形结构中元素之间存在一对多_关系。(第一章)
2
n
3.一个算法的最基本的原操作执行次数为(3n +2nlog2 +4n-7)/(7n),则该算法的时间
复杂度为_ O(n)______。(第一章)
4.链式存储结构用一组地址任意的存储单元依次存放数据元素,数据元素之间的逻辑
关系通过__指针________间接地反映。(第二章)
答 顺序表的优点势可以随机访问数据元素;缺点是大小固定,不利于增减结点(增 减操作需要移动元素)。链表的优点是采用指针方式增减结点,非常方便(只需要改 变指针指向,不移动结点)。其缺点是不能进行随机访问,只能顺序访问;另外,每
第5页 共 10 页
个结点上增加指针域,造成额外存储空间增大。
2. (第二章)在一个单链表 HL 中删除指针 p 所指结点,应执行如下关键操作: if(________) HL = HL->next; else { q = HL; while(________) q = q->next; _____________; } delete p;
件是_____B_____。(第五章)
a 空或只有一个结点
b 高度等于其结点数
c 任一结点无右孩子
d 任一结点无左孩子
21. 树的基本遍历策略分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序
遍历、中序遍历和后序遍历。结论___A_______是正确的。(第五章)
a.树的先根遍历序列与其对应的二叉树的先序遍历序列相同
08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,
数据结构作业题目
一、第一次作业
①写一个函数find,实现从数组a[n]查找元素x,返回x在数组中的序号,如果找不到则返回-1。
②当a[n]递增有序时,有没有高效的算法?
③以Niklus Wirth的观点,程序是什么?
④算法有什么特性?
⑤好算法应该满足哪些标准?
⑥数据结构主要在哪些层面上讨论问题?
⑦按增长率由小至大的顺序排列下列各函数(严蔚敏题集1.10)
⑧试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z 的值(严蔚敏题集1.16)
二、第二次作业
1)题集2.2(严蔚敏)
2)题集2.10(严蔚敏)
3)题集2.12(严蔚敏)
4)题集2.7(严蔚敏)
5)题集2.15(严蔚敏)
三、第三次作业
第二章题集1、9、10(于津、陈银冬)
四、第四次作业
第三章题集1、2、3、4、5(于津、陈银冬)
五、第五次作业
①第四章题集2、5(于津、陈银冬)
②实现以下C库函数:
(1)strlen(cs)
(2)strcpy(s, ct)
(3)strcmp(cs, ct)
③完成对称矩阵、三角矩阵、对角矩阵在压缩存储下的输入输出算法
④第五章题集1、2、3(于津、陈银冬)
六、第六次作业
第六章题集1、2、10(于津、陈银冬)
七、第七次作业
第六章题集3、8、12、13(于津、陈银冬)
八、第八次作业
第六章题集6、7、9、15(于津、陈银冬)
九、第九次作业
第七章题集1、7(另加上“十字链表”存储)(于津、陈银冬)。
数据结构作业题及参考答案【精选文档】
东北农业大学网络教育学院数据结构作业题(一)一、选择题(每题2分,共20分)1.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为( )。
A、O(n)B、O(n/2)C、O (1)D、O(n2)2.带头结点的单链表first为空的判定条件是()。
A、first == NULL;B、first->link == NULL;C、first-〉link == first;D、first != NULL;3.在一棵树中,()没有前驱结点.A、分支结点B、叶结点C、树根结点D、空结点4.在有向图中每个顶点的度等于该顶点的( )。
A、入度B、出度C、入度与出度之和D、入度与出度之差5.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为( )的值除以9。
A、20B、18C、25D、226.下列程序段的时间复杂度为( )。
s=0;for(i=1;i<n;i++)for(j=1;j〈n;j++)s+=i*j;A、O(1)B、O (n)C、O(2n)D、O(n2)7.栈是一种操作受限的线性结构,其操作的主要特征是()。
A、先进先出B、后进先出C、进优于出D、出优于进8.假设以数组A[n]存放循环队列的元素,其头、尾指针分别为front和rear.若设定尾指针指向队列中的队尾元素,头指针指向队列中队头元素的前一个位置,则当前存于队列中的元素个数为()。
A、(rear-front—1)%nB、(rear—front)%nC、(front-rear+1)%nD、(rear—front+n)%n9.高度为5的完全二叉树中含有的结点数至少为()。
A、16B、17C、31D、3210.如图所示有向图的一个拓扑序列是( )A、ABCDEFB、FCBEADC、FEDCBAD、DAEBCF二、填空题(每空1分,共20分)1.n (n﹥0)个顶点的无向图最多有条边,最少有条边。
2.在一棵A VL树中,每个结点的左子树高度与右子树高度之差的绝对值不超过.3.已知8个数据元素为(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵二叉排序树,则该树的深度为。
数据结构作业题
数据结构作业题(总15页) -本页仅作为预览文档封面,使用时请删除本页-第一章1、设n为正整数,利用大"O"记号,将下列程序段的执行时间表示为n的函数。
(1) i=1; k=0;while(i<n){ k=k+10*i;i++;}(2) i=0; k=0;do{k=k+10*i; i++;}while(i<n);(3) i=1; j=0;while(i+j<=n){if (i>j) j++;else i++;}(4)x=n; 编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。
当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈顶指针top[1]等于m时该栈为空。
两个栈均从两端向中间增长。
当向第0号栈插入一个新元素时,使top[0]增1得到新的栈顶位置,当向第1号栈插入一个新元素时,使top[1]减1得到新的栈顶位置。
当top[0]+1 == top[1]时或top[0] == top[1]-1时,栈空间满,此时不能再向任一栈加入新的元素。
试定义这种双栈(Double Stack)结构的类型定义,并实现初始化、判栈空、判栈满、插入、删除算法。
0 m-1【提示】类型定义:#define m 100;Typedef int dsType;试利用算符优先法,画出对如下中缀算术表达式求值时运算符栈和操作数栈的变化。
a +b * (c - d) – e# (#表示结束符)第四章设有模式串T1,T2,T1=‘aaab’,T2=‘abcabaa’,目标串s为‘abc aaabbabcabaacbacba’,(1)计算模式串T1的next(j) 和nextval(j)函数的值,并(按照nextval(j) )画出KMP算法匹配过程。
(2)计算模式串T2的next(j) 和nextval(j)函数的值,并(按照nextval(j) )画出KMP算法匹配过程。
数据结构题及参考答案
数据结构作业题作业题(一)一、单项选择题1. 从逻辑上可以把数据结构分为( c )两大类。
A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构2. 链表不具有的特点是( b )A.插入、删除不需要移动元素 B.可随机访问任一元素C.不必事先估计存储空间 D.所需空间与线性长度成正比3.下面程序段的时间复杂度的量级为( d )。
For(i=1;i<=n;i++)For(j=1;j<=I;j++)For(k=1;k<=j;k++)X=x+1;A.O(1) B.O(n)C.O(n²) D.O(n³)4.在一个带头结点的双向循环链表中,若要在p所指向的结点之前插入一个新结点,则需要相继修改(c)个指针域的值。
A.2 B.3C.4 D.65、一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是( b )。
A.98 B.100C.102 D.1066、判定一个栈s(最多元素为m0)为空的条件是(b)。
A.s-〉top! =0 B.s-〉top= =0C.s-〉top! =m0 D.s-〉top= =m07、循环队列用数组A[m](下标从0到m-1)存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是( a )。
A.(rear-front+m)%m B.rear-front+1C.rear-front-1 D. rear-front8、设有两个串S1与S2,求串S2在S1中首次出现位置的运算称作(c)。
A.连接 B.求子串C.模式匹配 D.判子串9、设串S1='ABCDEFG',S2='PQRST',函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串S的的从序号i的字符开始的j个字符组成的子串,len(s)返回串S的长度,则con(subs(S1,2,len(S2)),subs(S1,len(S2),2))的结果是( d )。
数据结构作业
数据结构作业一、引言数据结构是计算机科学中的重要概念,它涉及组织、存储和管理数据的方法和原则。
在计算机科学领域,数据结构是实现算法和程序设计的基础。
本文将介绍数据结构作业中常见的问题和解决方案。
二、线性数据结构1. 数组数组是一种线性数据结构,它能够存储相同类型的元素。
在数据结构作业中,数组常用于解决需要顺序访问元素的问题。
例如,计算一个数组的平均值或找出最大值。
2. 链表链表也是一种常见的线性数据结构。
它由节点组成,每个节点保存一个元素和一个指向下一个节点的引用。
链表常用于需要频繁插入和删除操作的场景。
在数据结构作业中,我们可能需要实现链表的插入、删除、反转等操作。
三、非线性数据结构1. 树树是一种分层的非线性数据结构。
它由节点和边组成,节点之间存在层次关系。
树常用于表达层级结构,比如文件系统或组织架构。
在数据结构作业中,我们可能需要实现树的遍历,例如前序遍历、中序遍历和后序遍历。
2. 图图是一种由节点和边组成的非线性数据结构。
节点之间的边可以表示任意关系。
图常用于表示网络、社交关系等复杂结构。
在数据结构作业中,我们可能需要实现图的遍历、最短路径算法等操作。
四、常见数据结构算法1. 查找算法查找算法用于在数据结构中查找一个特定的元素。
常见的查找算法包括线性查找、二分查找和哈希查找。
在数据结构作业中,我们可能需要根据特定要求选择合适的查找算法。
2. 排序算法排序算法是将一组元素按照特定顺序排列的算法。
常见的排序算法包括冒泡排序、插入排序和快速排序。
在数据结构作业中,我们需要选择合适的排序算法,以便高效地对数据进行排序操作。
五、应用实例数据结构的应用非常广泛,它在各个领域都有重要作用。
以下是一些数据结构在实际应用中的例子。
1. 括号匹配在编程中,我们经常需要检查括号是否匹配。
这可以通过使用栈这种数据结构来实现。
我们可以遍历字符串,每当遇到左括号时,将其入栈;每当遇到右括号时,将栈顶元素出栈并进行匹配。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 分别画出在线性表(a,b,c,d,e,f,g)中进行折半查找,以查关键字等于e、f和g的过程。
(1)查e
Step 1: a b c d e f g
↑↑↑
low mid high d<e low=mid + 1;
Step 2: a b c d e f g
↑↑↑
low mid high f>e high=mid – 1;
Step 3: a b c d e f g
↑
low/high
mid e==e return(mid);
(2)查f
Step 1: a b c d e f g
↑↑↑
low mid high d<f low=mid + 1;
Step 2: a b c d e f g
↑↑↑
low mid high f==f return(mid);
(3)查g
Step 1: a b c d e f g
↑↑↑
low mid high d<g low=mid + 1;
Step 2: a b c d e f g
↑↑↑
low mid high f<g low=mid + 1;
Step 3: a b c d e f g
↑
low/high
mid g==g return(mid);
2. 请将折半查找的算法改写为递归算法。
int BiSearch( SSTable *ST,int low, int high )
{//用递归方法对表ST进行折半查找ST.elem[0]
mid = ( low + high ) / 2;
if( ST.elem[mid] != ST.elem[0] )
{
if( ST.elem[mid] > ST.elem[0] ) BiSearch( ST, low, mid-1 );
if( ST.elem[mid] < ST.elem[0] ) BiSearch( ST, mid+1, high);
}
else
return (mid);
}
int Search_Bi( SSTable *ST ,KeyType key )
{//在表ST中折半查找元素key
(*ST).elem[0] = key;
return( BiSearch ( ST, 1, (*ST).length ) );
}
3. 编写判别给定二叉树是否为二叉排序树的算法。
假设此二叉树是以二叉链表的形式存储的,且树中关键字均不同。
int JudgeQ( SqQueue &Q, TElemType e )
{//比较Q内队头元素与e的大小,若e大,则flag=1;否则,返回flag=0 flag=1; //初始化flag
push ( &Q, e ); //将树型元素e进队
if( Q.rear-Q.front == 2||Q.rear+MAXSIZE-Q.front == 2 )
{ //如果队列里有两个元素时,比较其大小,并让队头元素出队if( Q.base[Q.front]<Q.base[Q.rear-1]||Q.base[Q.front]<Q.base[MAXSIZE] ) flag=1; //flag记录队中元素的大小,前者小时,令flag=1
else
flag=0; //前者大时,令flag=0
pop( &Q, &u ); //让队头元素出队
}
Return flag; //返回队列中两元素的大小关系情况
}
Int InTraverseBiTree( BiTree T,SqQueue &Q )
{//中序遍历二叉树T,并用flag记录对树的遍历情况
flag=1; //初始化flag
if( T )
{ //若树不空,则中序遍历树,用flag记录遍历的情况
if( flag==1 ) flag = InTraverseBiTree(T->lchild,Q); //中序遍历左子树
if( flag==1 ) flag = Judge( Q, T->data ); //访问树的根节点
if( flag==1 ) flag = InTraverseBiTree(T->rchild,Q); //中序遍历右子树
}
Return flag; //返回遍历树的情况
}
int JudgeSortBiTree ( BiTree T )
{//判别给定二叉树T是否为二叉排序树,若是则返回OK;不是则返回ERROR
InitQueue( &Q ); //初始化队列Q
k = InTraverseBiTree( T, Q ); //用k记录遍历树的情况
if(k==1) //若遍历成功,即树中每个元素都满足二叉排序树条件return OK; //则返回OK
else //遍历不成功,即树中存在不满足条件的元素
return ERROR; //则返回ERROR
}。