数据结构作业标准答案

合集下载

数据结构》作业题答案

数据结构》作业题答案

参考答案第一章、绪论一、选择题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)基于时间的考虑。

若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。

数据结构作业题目答案

数据结构作业题目答案

数据结构作业题⽬答案⼀、单择题1.栈和队列的共同特点是(A)。

A.只允许在端点处插⼊和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.⼆叉树的第k层的结点数最多为(2的k-1次⽅)。

A.2k-1B.2K+1C.2K-1D. 2k-13.数据结构中,从逻辑上可以把数据结构分成(C)。

A.动态结构和静态结构B.进凑结构和⾮进凑结构C.线性结构和⾮线性结构D.内部结构和外部结构4.设⼆叉树的先序遍历序列和后序遍历序列正好相反,则该⼆树满⾜的条件是(全部是左⼦树或全部是右⼦树 CD )。

A.空或只有⼀个结点B.⾼度等于其结点数C.任⼀结点⽆左孩⼦D.任⼀结点⽆右孩⼦5.设顺序线性表中有n个数据元素,则删除表中第i个元素需要移动( A )个元素。

A. n-iB. n+l -iC.n-1-iD. i6.判定⼀个栈ST(最多元素为m0)为空的条件是(B)。

A.ST→TOP!=0B.ST→TOP==0C.ST→TOP!=m0D.ST→TOP==m0B7. ⾮空的循环单链表head的尾结点(由P所指向)满⾜( C )。

A.p->next=NULLB.p=NULLC.p->next=headD.p=head8.在线性结构中,所有结点都有( B )个直接后继。

A.0B.0或1C.1D.不确定9.设数组A[m]作为循环队列sq的存储空间,front为队头指针,rear为队尾指针,则执⾏⼊队操作时修改指针的语句是。

A、sq.front=(sq.front+1)%mB、sq.front=(sq.front+1)%(m+1)C、sq.rear=(sq.rear+1)%mD、sq.rear=(sq.rear+1)%(m+1)⼆、填空题1.已知⼀棵⼆叉树的中序序列和后序序列分别为:DBGEACHF和DGEBHFCA,则该⼆叉树的前序序列是( ABDECFH )。

2.在( 循环 )链表中,从任何⼀结点出发都能访问到表中的所有结点。

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)【第一章绪论】1. 数据结构是计算机科学中的重要基础知识,它研究的是如何组织和存储数据,以及如何通过高效的算法进行数据的操作和处理。

本章主要介绍了数据结构的基本概念和发展历程。

【第二章线性表】1. 线性表是由一组数据元素组成的数据结构,它的特点是元素之间存在着一对一的线性关系。

本章主要介绍了线性表的顺序存储结构和链式存储结构,以及它们的操作和应用。

【第三章栈与队列】1. 栈是一种特殊的线性表,它的特点是只能在表的一端进行插入和删除操作。

本章主要介绍了栈的顺序存储结构和链式存储结构,以及栈的应用场景。

2. 队列也是一种特殊的线性表,它的特点是只能在表的一端进行插入操作,而在另一端进行删除操作。

本章主要介绍了队列的顺序存储结构和链式存储结构,以及队列的应用场景。

【第四章串】1. 串是由零个或多个字符组成的有限序列,它是一种线性表的特例。

本章主要介绍了串的存储结构和基本操作,以及串的模式匹配算法。

【第五章数组与广义表】1. 数组是一种线性表的顺序存储结构,它的特点是所有元素都具有相同数据类型。

本章主要介绍了一维数组和多维数组的存储结构和基本操作,以及广义表的概念和表示方法。

【第六章树与二叉树】1. 树是一种非线性的数据结构,它的特点是一个节点可以有多个子节点。

本章主要介绍了树的基本概念和属性,以及树的存储结构和遍历算法。

2. 二叉树是一种特殊的树,它的每个节点最多只有两个子节点。

本章主要介绍了二叉树的存储结构和遍历算法,以及一些特殊的二叉树。

【第七章图】1. 图是一种非线性的数据结构,它由顶点集合和边集合组成。

本章主要介绍了图的基本概念和属性,以及图的存储结构和遍历算法。

【总结】1. 数据结构是计算机科学中非常重要的一门基础课程,它关注的是如何高效地组织和存储数据,以及如何通过算法进行数据的操作和处理。

本文对《数据结构》第二版严蔚敏的课后习题作业提供了参考答案,涵盖了第1-7章的内容。

数据结构习题参考答案

数据结构习题参考答案

数据结构习题参考答案一、栈和队列1. 栈是一种具有后进先出(Last In First Out)特性的线性数据结构。

常用方法:- push(x): 将元素x压入栈顶;- pop(): 弹出栈顶元素;- top(): 返回栈顶元素;- isEmpty(): 判断栈是否为空;例题解答:(1)题目描述:使用栈实现队列的功能。

解答:使用两个栈,一个用于入队操作,一个用于出队操作。

入队操作:直接将元素压入入队栈中;出队操作:如果出队栈为空,则将入队栈的元素逐个弹出并压入出队栈,此时出队栈的栈顶元素即为要弹出的元素。

复杂度分析:入队操作的时间复杂度为O(1),出队操作的平均时间复杂度为O(1)。

(2)题目描述:判断括号序列是否合法,即括号是否完全匹配。

解答:使用栈来处理括号序列,遇到左括号则入栈,遇到右括号则与栈顶元素进行匹配,如果匹配成功则继续处理剩余字符,如果不匹配则判定为非法序列。

算法步骤:- 初始化一个空栈;- 从左到右遍历括号序列,对于每个字符执行以下操作:- 如果是左括号,则将其入栈;- 如果是右括号,则将其与栈顶元素进行匹配:- 如果栈为空,则判定为非法序列;- 如果栈顶元素与当前字符匹配,则将栈顶元素出栈,继续处理剩余字符;- 如果栈顶元素与当前字符不匹配,则判定为非法序列。

- 遍历结束后,如果栈为空,则括号序列合法;否则,括号序列非法。

复杂度分析:时间复杂度为O(n),其中n为括号序列的长度。

2. 队列是一种具有先进先出(First In First Out)特性的线性数据结构。

常用方法:- enqueue(x): 将元素x入队;- dequeue(): 出队并返回队首元素;- getFront(): 返回队首元素;- isEmpty(): 判断队列是否为空;例题解答:(1)题目描述:使用队列实现栈的功能。

解答:使用两个队列,一个用于入栈操作,一个用于出栈操作。

入栈操作:直接将元素入队入栈队列中;出栈操作:如果出栈队列为空,则将入栈队列的元素逐个出队并入队出栈队列,此时出栈队列的队首元素即为要出栈的元素。

数据结构(C++版)课后作业1-6章带答案

数据结构(C++版)课后作业1-6章带答案

第1 章绪论课后习题讲解1. 填空(1) 从逻辑关系上讲,数据结构主要分为()、()、()和()。

(2) 数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。

(3)算法在发生非法操作时可以作出处理的特性称为()。

2. 选择题⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。

A 线性结构 B 非线性结构 C 存储位置 D 指针⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。

则表示该遗产继承关系的最合适的数据结构应该是()。

A 树 B 图 C 线性表 D 集合3. 判断题(1) 每种数据结构都具备三个基本操作:插入、删除和查找。

第2 章线性表课后习题讲解1. 填空⑵顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是()。

第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108⑶设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。

【解答】p->next=(p->next)->next⑸非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。

p->next=head⑹在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是();删除开始结点的操作序列为()。

【解答】s->next =rear->next; rear->next =s; rear =s; q=rear->next->next;rear->next->next=q->next; delete q;2. 选择题⑴线性表的顺序存储结构是一种()的存储结构,线性表的链接存储结构是一种()的存储结构。

数据结构第4-5章作业及答案

数据结构第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、稀疏矩阵⼀般的压缩存储⽅法有两种,即三元组表和⼗字链表。

数据结构习题答案 .doc

数据结构习题答案 .doc

单元练习1一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)(√)(1)数据的逻辑结构与数据元素本身的内容和形式无关。

(√)(2)一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。

(ㄨ)(3)数据元素是数据的最小单位。

(ㄨ)(4)数据的逻辑结构和数据的存储结构是相同的。

(ㄨ)(5)程序和算法原则上没有区别,所以在讨论数据结构时可以通用。

(√)(6)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。

(√)(7)数据的存储结构是数据的逻辑结构的存储映像。

|(√)(8)数据的物理结构是指数据在计算机内实际的存储形式。

(ㄨ)(9)数据的逻辑结构是依赖于计算机的。

(√)(10)算法是对解题方法和步骤的描述。

二.填空题(1)数据有逻辑结构和存储结构两种结构。

(2)数据逻辑结构除了集合以外,还包括:线性结构、树形结构和图形结构。

(3)数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。

(4)树形结构和图形结构合称为非线性结构。

(5)在树形结构中,除了树根结点以外,其余每个结点只有 1 个前趋结点。

(6)>(7)在图形结构中,每个结点的前趋结点数和后续结点数可以任意多个。

(8)数据的存储结构又叫物理结构。

(9)数据的存储结构形式包括:顺序存储、链式存储、索引存储和散列存储。

(10)线性结构中的元素之间存在一对一的关系。

(11)树形结构结构中的元素之间存在一对多的关系,(12)图形结构的元素之间存在多对多的关系。

(13)数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)三个方面的内容。

(14)数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系的有限集合。

(15)算法是一个有穷指令的集合。

(16)算法效率的度量可以分为事先估算法和事后统计法。

(17)!(18)一个算法的时间复杂性是算法输入规模的函数。

(19)算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模n 的函数。

数据结构作业答案(大连理工大学)

数据结构作业答案(大连理工大学)

作业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("查找失败。

数据结构第二章作业及答案

数据结构第二章作业及答案

8
解答(续):
(2) 插入操作基本步骤: 1) 若i不合法或表L已满,算法结束并返回 ERROR;否则转2) 2) 将第i个元素及之后的所有元素均后移一个位置 3) 将新元素写入空出的位置; 4) 表长+1
9
解答(续):
插入操作算法(算法2.4 ):
Status ListInsert_Sq(SqList &L, int i , ElemType e) { //在顺序线性表L中第i个位置之前插入新的元素e, // i的合法值为1≤i≤ListLength_Sq(L)+1 if (i<1||i>L.length+1)return ERROR; //i值不合法 if (L.length>=L.listsize) { //当前存储空间已满,重新分配空间 newbase=(ElemType*)realloc(L. elem, (L.listsize+LISTINCREMENT)*sizeof (ElemType)); if (!newbase)exit(OVERFLOW); //存储分配失败 L. elem=newbase; //新基址 L.listsize+=LISTINCREMENT; //增加存储容量 } q=&(L.elem[i-1]); //q为插入位置 for (p=&(L. elem[L.length-1]); p>=q ; --p) *(p+1) = *p; //插入位置及之后的元素右移 *q=e; //插入e ++L.length; //表长增1 return OK; }//ListInsert_Sq
15
4.若某线性表最常用的操作是存取任一指定序号的元素和在最 后进行插入和删除运算,则利用( )存储方式最节省时间。 A.顺序表 B.双向链表 C.带头结点的双向循环链表 1 D.循环链表

(完整版)数据结构练习题及参考答案

(完整版)数据结构练习题及参考答案

数据结构练习题第一部分绪论一、单选题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. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。

数据结构习题参考答案(全)

数据结构习题参考答案(全)

4.2 设三维数组的维度分别是 m, n, l;每个元素占 k 个存储单元。 Loc(A[i][j][k]) = Loc(A[0][0][0]) + (i * n * l + j * l) * k 4.6
4.7 col num k 0 1 0 1 0 1 2 2 1 3 1 3 4 2 4
5.2 (1)无序树:9 棵 (2)有序树:12 棵 (3)二叉树:30 棵 5.4 (1)2k-1
5 2 0
-1 0
8 3 6 4
3 4 5 6
10
1
1
2
7
7 8
9
9
11
10 11
ASL 成功=1/12(1*1+2*2+3*4+4*5)=37/12 ASL 失败=1/13(3*3+4*10)=49/13
7.1
7.3
7.16 (1)
f b a
7.17 (1) 删除 a
h k r de g ij m sx
B
C K
9 12 1 E 0 F 5 5 0 1 C 2 3 A B
(2)WPL = 91 (3)各字符的编码 A:1010 B:1011 C:100 D:00 E:01 F:11
6.5 template <class T> bool SeqList<T>::Search1(T x)const { return SearchRec(x, 0); } template <class T> bool SeqList<T>::SearchRec(T x, int i)const { if (i >= n) return false; if (elements[i] == x) return true; else return SearchRec(x, i+1); } 6.6 template <class T> bool SingleList<T>::Search1(T x) const { Node<T> *p = first; while (p && p->element < x) { p = p->link; } if (p == NULL || p->element > x) return false; return true; } 6.10

北语直属14秋《数据结构》作业1满分答案

北语直属14秋《数据结构》作业1满分答案

作业名称:14秋《数据结构》作业1 出卷人:SA
作业总分:100 通过分数:60
起止时间:2015-1-21 10:20:21 至2015-1-22 9:11:26
学员姓名:学员成绩:100
标准题总分:100 标准题得分:100
详细信息:
题号:1 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:4.17 内容:
将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为___。

A、O(1)
B、O(n)
C、O(m)
D、O(m+n)
标准答案:C
学员答案:C
本题得分:4.17
题号:2 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:4.17 内容:
栈和队列的共同特点是___。

A、只允许在端点处插入和删除元素
B、都是先进后出
C、都是先进先出
D、没有共同点
标准答案:A
学员答案:A
本题得分:4.17
题号:3 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:4.17 内容:
图形:
A、(A)
B、(B)
C、(C)
D、(D)
标准答案:A
学员答案:A
本题得分:4.17。

大连理工大学《数据结构》作业 参考答案

大连理工大学《数据结构》作业 参考答案
u=q->link; q->link=L->link; L->link=q; q=u; } }
数据结构作业参考答案
//有序表插入 void yxcharu(LinkList &L, ElemType e) {
LinkList pre,p,s; pre=L; p=L->link; while(p&&p->data<e) {
pre=p; p=p->link; } s=(LinkList)malloc(sizeof(Lnode)); s->data=e; s->link=p; pre->link=s; }
main()
{
LinkList L;
int n,i,mink,maxk;
ElemType e;
char choice='0';
数据结构作业参考答案
if(InitList_Sq(L)) {
printf("建立空顺序表成功!\n"); do{
printf("当前线性表长度为:%d\n",L.length); printf("请输入要插入元素的位置:"); scanf("%d",&i); printf("请输入要插入的元素值:"); scanf("%d",&k); if(sxbcr(L,i,k)) {
s=(LinkList)malloc(sizeof(Lnode));
scanf("%d",&s->data); s->link=NULL;
p->link=s;
p=s;

数据结构作业题及参考答案【精选文档】

数据结构作业题及参考答案【精选文档】

东北农业大学网络教育学院数据结构作业题(一)一、选择题(每题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),按照依次插入结点的方法生成一棵二叉排序树,则该树的深度为。

数据结构(本)-国家开放大学电大学习网形考作业题目答案

数据结构(本)-国家开放大学电大学习网形考作业题目答案

数据结构(本)一、单选题1.把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为()。

A.逻辑结构B.物理结构C.算法的具体实现D.给相关变量分配存储单元正确答案: B2.下列说法中,不正确的是()。

A.数据元素是数据的基本单位B.数据项是数据中不可分割的最小可标识单位C.数据可有若干个数据元素构成D.数据项可由若干个数据元素构成正确答案: D3.一个存储结点存储一个()。

A.数据项B.数据元素C.数据结构D.数据类型正确答案: B4.数据结构中,与所使用的计算机无关的是数据的()。

A.存储结构B.物理结构C.逻辑结构D.物理和存储结构正确答案: C5.在线性表的顺序结构中,以下说法正确的是()。

A.逻辑上相邻的元素在物理位置上不一定相邻B.数据元素是不能随机访问的C.逻辑上相邻的元素在物理位置上也相邻D.进行数据元素的插入、删除效率较高正确答案: C6.对链表, 以下叙述中正确的是()。

A.不能随机访问任一结点B.结点占用的存储空间是连续的C.插入删除元素的操作一定要要移动结点D.可以通过下标对链表进行直接访问正确答案: A7.下列的叙述中,不属于算法特性的是()。

A.有穷性B.输入性C.可行性D.可读性8.算法的时间复杂度与()有关。

A.所使用的计算机B.计算机的操作系统C.算法本身D.数据结构正确答案: C9.设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为()。

A.n-i+1B.n-iC.n-i-1D.i正确答案: A10.设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为()。

A.n-i+1B.n-iC.n-i-1D.i正确答案: B11.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句()。

A.p=q->nextB.p->next=qC.p->next=q->nextD.q->next=NULL正确答案: C12.在一个单链表中p所指结点之后插入一个s所指的结点时,可执行()。

数据结构题及参考答案

数据结构题及参考答案

数据结构作业题作业题(一)一、单项选择题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. 链表:链表是一种动态数据结构,它通过指针将数据元素按照一定的顺序连接起来。

链表的优点是插入和删除操作比较快,但是访问元素需要遍历链表。

3. 栈:栈是一种后进先出(LIFO)的数据结构,它只允许在栈顶进行插入和删除操作。

栈的应用场景包括函数调用、表达式求值和括号匹配等。

4. 队列:队列是一种先进先出(FIFO)的数据结构,它只允许在队尾插入元素,在队头删除元素。

队列的应用场景包括任务调度、消息传递和缓冲区管理等。

5. 树:树是一种非线性的数据结构,它由节点和边组成,每个节点可以有多个子节点。

树的应用场景包括文件系统、数据库索引和网络路由等。

6. 图:图是一种包含节点和边的数据结构,节点表示实体,边表示实体之间的关系。

图的应用场景包括社交网络、地图导航和网络拓扑等。

三、数据结构的应用数据结构在计算机科学中有着广泛的应用。

例如,在搜索引擎中,数据结构被用于构建倒排索引,以实现快速的关键词搜索。

在数据库系统中,数据结构被用于索引和排序,以提高查询和排序的效率。

在人工智能领域,数据结构被用于构建决策树和神经网络,以实现机器学习和深度学习。

此外,数据结构还被广泛应用于算法设计和优化。

数据结构作业解答

数据结构作业解答

第一章作业一、选择题1. 算法的计算量的大小称为计算的( B )。

A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于( C)A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(C),它必须具备(B)这三个特性。

(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性4.一个算法应该是( B )。

A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C.5. 下面关于算法说法错误的是( D )A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是( A )(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为( C )两大类。

A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.在下面的程序段中,对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)9.程序段 FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOif A[j]>A[j+1]A[j]与A[j+1]对换;其中 n为正整数,则最后一行的语句频度在最坏情况下是(D )A. O(n)B. O(nlogn)C. O(n3)D. O(n2)二、判断题1. 数据元素是数据的最小单位。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章单选题1、下列关于算法的基本特征,说法不正确的是()。

能行性是算法中的每一个步骤必须能够实现且能达到预期的目的。

算法的确定性是指算法中的每一个步骤必须是有明确的定义,不允许模棱两可。

算法的有穷性是指算法必须能在有限的时间内做完。

算法与提供情报无关。

[D] 教师批改:D2、算法的时间复杂度取决于()。

问题的规模待处理的数据的初态问题的难度 A 和B[D] 教师批改:D3、下列选项中,不是算法基本特征的是()。

可行性有穷性确定性高效率[D] 教师批改:D4、通常一个好的算法应达到的目标中,不包括()。

正确性可读性技巧性健壮性[C] 教师批改:C5、在一般的计算机系统中,基本的运算和操作不包括()。

语法处理算术运算关系运算数据传输[A] 教师批改:A6、工程上常用的分治法是()。

列举法归纳法减半递推技术回溯法[C] 教师批改:C多选题7、算法设计的要求包括()。

正确性可读性健壮性唯一性[ABC] 教师批改:A,B,C8、算法的时间复杂度应该与()无关。

所使用的计算机程序设计语言基本运算的执行次数程序编制者[ABD] 教师批改:A,B,D9、下列关于算法的描述中,不正确的有()。

算法即是计算机程序算法是解决问题的计算方法算法是排序方法算法是解决问题的有限运算序列[ABC] 教师批改:A,B,C填空题16、所谓算法是指()。

教师批改:解题方案的准确而完整的描述17、算法的基本特征有()、()、()和()教师批改:能行性、确定性、有穷性和拥有足够的情报。

18、一个算法通常由两种基本要素组成,它们是()和()。

教师批改:算法中对数据的运算和操作。

算法的控制结构。

19、工程上常用的几种算法设计方法有列举法、()、()、()、()和回溯法。

教师批改:归纳法、递推、递归、减半递推技术。

20、算法的复杂度主要包括()复杂度和()复杂度。

教师批改:时间、空间综合题21、设给定3个整数a,b,c,试写出寻找这3个整数的中数的算法;并分析在平均情况与最坏情况下,该算法分别要做多少次比较?寻找这3个整数的中数的算法用C语言描述如下(中数m由函数值返回):int mid ( int a, int b, int c){ int m 。

m=a 。

if ( m>=b ) { if (m>=c) { if ( b>=c ) m=b 。

else m=c 。

} }else { if ( m<=c) { if (b>=c) m=c。

else m=b 。

} }return ( m ) 。

}假设a,b,c中的每一个数为中数的概率相等(均为1/3)。

由于当a为中数时需要比较2次,b或c为中数时均需要比较3次,因此,在平均情况下上述算法所需要的比较次数为2*(1/3)+3*(1/3)+3*(1/3)= 8/3即在平均情况下,上述算法需要比较8/3次。

在最坏情况下,上述算法需要比较3次(当b或c为中数时)。

第二章选择题1、下列排序方法中,哪一个是稳定的排序方法()。

归并排序稀尔排序堆排序快速排序[A] 教师批改:A2、设输入序列为1,2,3,4,借助一个栈得到的输出序列可以是()。

3,4,1,2 4,2,1,34,1,2,3 1,3,4,2[D] 教师批改:D3、用数组A[m]存放循环队列的元素值,若其头尾指针分别为front和rear,则循环队列中当前元素的个数为()。

(rear+front)%m (rear-front+m)%m(rear-front)%m (rear-front+1)%m[D] 教师批改:B4、对于下三角矩阵A,若采用一个一维数组B以行为主顺序存放压缩矩阵A,则A43存放在()中. B7 B8B9 B10[C] 教师批改:C5、深度为5的二叉树至多有()个结点。

16 3231 10[C] 教师批改:C6、一个有n个顶点的无向图最多有()条边。

n n(n-1)n(n-1)/2 2n[C] 教师批改:C7、下列说法不正确的是()。

线性表可以顺序存储线性表可以链式存储线性表在顺序存储下可以对分查找线性表在链式存储下可以对分查找[D] 教师批改:D8、栈和队列的共同点是()。

都是先进后出都是先进先出只允许在端点处插入和删除元素没有共同点[C] 教师批改:C9、若进栈序列为A、B、C、D(进栈过程可以出栈),不可能得到的出栈序列是()。

A、D、C、B B、C、D、AC、A、D、B C、D、B、A[C] 教师批改:C10、在一个单链表中,若p结点不是最后一结点。

在p结点之后插入s结点的正确操作是()。

s->next=p。

p->next=s。

s->next=p->next 。

p->next=s。

s->next=p。

p=p。

p->next=s。

s->next=p。

[B] 教师批改:B11、由3个结点可以构造出多少种不同的二叉树()。

2 45 8[C] 教师批改:C填空题27、若一棵完全二叉树共有100个结点,则其叶子结点数为()。

教师批改:5028、在单链表中设置(表)头结点的作用是()。

教师批改:简化插入,删除算法,方便运算的实现。

29、结点最少的树为(),结点最少的二叉树为()。

教师批改:只有一个(根)结点的树。

空的二叉树。

34、在一棵二叉树中有30个叶子结点,仅有一个孩子的结点有20个,则该二叉树结点数为()。

教师批改:7935、在线性表的散列存储中,处理冲突有()和()两种方法。

教师批改:拉链法、开地址法36、已知一棵二叉树的中序遍历序列和后序遍历序列分别为BDCEAFHG和DECBHGFA,试写出其前序遍历序列。

教师批改:前序遍历:ABCDEFGH30、数据的()结构与数据元素本身的内容、形式、个数和相对位置无关。

教师批改:逻辑31、数据的存储结构有四种基本的存储映射方式:顺序、()、索引和()存储方式。

教师批改:链式、散列32、用顺序方法将完全二叉树的结点逐层存放在数组A[1]~A[n]中,若结点A[i] 有右子女,则右子女是结点为()。

教师批改:A[2*i+1]33、设有二维数组A4×6,其中每个元素占两个字节,数组按列优先顺序存储,第一个元素a11的存储地址为100,那么元素a43的存储地址为()。

教师批改:122综合题37、什么叫数据结构?数据结构对算法有什么影响?数据结构是指相互有关联的数据元素的集合。

因此,一个数据结构既要反映数据元素的信息,又要反映数据元素之间的关系。

数据元素之间的关系可以是逻辑关系(通常用前后件关系来表示),也可以是数据元素在计算机中的存储位置。

反映数据元素之间逻辑关系的数据结构称为数据的逻辑结构。

数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,又称为数据的物理结构。

同一批数据元素的集合,采用不同的数据结构(特别是存储结构),其数据处理的效率是不一样的,主要体现在算法的时间复杂度与空间复杂度方面。

比如:若只是对2~3个数进行排序,则用几个IF语句即可完成;而若对一般情况下的N个数进行排序,则要使用数组,通过(双重等)循环来完成。

38、试写出在顺序存储结构下逆转线性表的算法,要求使用最少的附加空间顺序存储结构下逆转线性表的算法用C语言描述如下(其中ET为数据元素的类型):void invsl ( int n , ET a [ ] ){ int k 。

ET t 。

for ( k=0 。

k<n/2 。

k + + ){ t=a[k]。

a[k]=a[n-1-k]。

a[n-1-k]=t。

}return 。

}39、设循环队列的容量为70(序号为1~70),现经过一系列的入队与退队运算后,有:(1)front=14,rear=21。

(2)front=23,rear=12。

问在这两种情况下,循环队列中各有多少个元素?设循环队列的容量为M。

如果rear>front ,则循环队列中的元素个数为rear-front ;如果rear<front ,则循环队列中的元素个数为M+(rear-front) ;由此可以得到:(1)循环队列中的元素个数为rear-front = 21-14 = 7 。

(2)循环队列中的元素个数为M+(rear-front) = 70+(12-23) = 59 。

注:求循环队列中元素个数的通用式为:( rear-front+M ) % M 。

其中%为求余运算。

40、试编写一个算法,将两个有序的顺序表合并为一个有序的顺序表。

合并有序顺序表的算法如下描述。

输入:长度为的有序数组A(1:n),长度为的有序数组B(1:m)。

输出:有序数组A与有序数组B合并后的有序数组C(1:mn)。

其中mn = m+n 。

上述算法用C语言描述如下(其中ET为数据元素的类型):void mgsl ( int n , ET a[ ] , int m , ET b[ ] , ET c[ ] ){ int i , j , k , t 。

i = 0 。

j = 0 。

k = 0 。

while ( ( i<n ) && ( j<m ) ){ if ( a [ i ] <= b [ j ] ){ c [ k ] = a[ i ] 。

i = i+1 。

}else { c [ k ] = b [ j ] 。

j= j+1 。

}k = k+1 。

}if ( i = = n)for ( t = j 。

t < m 。

t + + ){ c [ k ] = b [ t ] 。

k = k+1 。

elsefor ( t = i 。

t < n 。

t + + ){ c [ k ] = a [ t ] 。

k = k+1 。

}return 。

}41、试写出计算循环链表长度的算法。

算法用C语言描述如下(其中ET为数据元素类型,函数值返回循环链表的长度n ):struct node /* 定义循环链表结点类型*/{ ET d 。

/* 定义循环链表结点数据类型*/struct node * next 。

/* 结点指针*/} 。

int lencst ( struct node * head ){ int n 。

struct node * p 。

n = 0 。

p = head->next 。

while ( p != head ) { n = n+1 。

p = p->next 。

}return ( n ) 。

}42、试写出逆转(带表头结点的)线性单链表的算法。

设其头指针为head ,数据元素类型为ET。

算法用C语言描述如下:struct node /* 定义线性单链表结点类型*/{ ET d 。

/* 定义线性单链表结点数据类型*/struct node * next 。

相关文档
最新文档