数据结构作业答案
数据结构作业题及参考答案
东北农业大学网络教育学院数据结构作业题(一)一、选择题(每题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) 个顶点的无向图最多有条边,最少有条边。
《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)
第1章4.答案:(1)顺序存储结构顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。
(2)链式存储结构顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。
但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。
所以链式存储结构通常借助于程序设计语言的指针类型来描述。
5. 选择题(1)~(6):CCBDDA6.(1)O(1) (2)O(m*n) (3)O(n2)(4)O(log3n) (5)O(n2) (6)O(n)第2章1.选择题(1)~(5):BABAD (6)~(10):BCABD (11)~(15):CDDAC 2.算法设计题(1)将两个递增的有序链表合并为一个递增的有序链表。
要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。
表中不允许有重复的数据。
[题目分析]合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。
如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。
当一个表到达表尾结点,为空时,将非空表的剩余元素直接链接在Lc表的最后。
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){//合并链表La和Lb,合并后的新表使用头指针Lc指向pa=La->next; pb=Lb->next;//pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点Lc=pc=La; //用La的头结点作为Lc的头结点while(pa && pb){ if(pa->data<pb->data){pc->next=pa; pc=pa; pa=pa->next;}//取较小者La中的元素,将pa链接在pc的后面,pa指针后移else if(pa->data>pb->data) {pc->next=pb; pc=pb; pb=pb->next;}//取较小者Lb中的元素,将pb链接在pc的后面,pb指针后移else //相等时取La中的元素,删除Lb中的元素{pc->next=pa;pc=pa;pa=pa->next;q=pb->next; delete pb ; pb =q;}}pc->next=pa?pa:pb; //插入剩余段delete Lb; //释放Lb的头结点}(5)设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。
3.数据结构作业答案第3章--第3章栈和队列自测卷答案作业答案
head第3章 栈和队列 自测卷答案 姓名 班级一、填空题(每空1分,共15分)1. 【李春葆】向量、栈和队列都是 线性 结构,可以在向量的 任何 位置插入和删除元素;对于栈只能在 栈顶 插入和删除元素;对于队列只能在 队尾 插入和 队首 删除元素。
2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为 栈顶 。
不允许插入和删除运算的一端称为 栈底 。
3. 队列 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
4. 在一个循环队列中,队首指针指向队首元素的 前一个 位置。
(注:不一定,这是一种约定,在殷教材中是队首指针指向队列的首元素位置)5. 在具有n 个单元的循环队列中,队满时共有 n-1 个元素。
6. 向栈中压入元素的操作是先 移动栈顶指针 ,后 存入元素 。
7. 从循环队列中删除一个元素时,其操作是 先 移动队首指针 ,后 取出元素 。
(注:不一定,这是一种约定,在殷教材中是先 取出元素 ,后移动队首指针 )8. 〖00年统考题〗带表头结点的空循环双向链表的长度等于 0 。
解:二、判断正误(判断下列概念的正确性,并作出简要的说明。
)(每小题1分,共10分) ( × )1. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
错,线性表是逻辑结构概念,可以顺序存储或链式存储,与元素数据类型无关。
( × )2. 在表结构中最常用的是线性表,栈和队列不太常用。
错,不一定吧调用子程序或函数常用,CPU 中也用队列。
( √ )3. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。
(√)4. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。
正确,都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。
(×)5. 栈和链表是两种不同的数据结构。
错,栈是逻辑结构的概念,是特殊殊线性表,而链表是存储结构概念,二者不是同类项。
数据结构》作业题答案
参考答案第一章、绪论一、选择题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. 数据结构是计算机科学中的重要基础知识,它研究的是如何组织和存储数据,以及如何通过高效的算法进行数据的操作和处理。
本章主要介绍了数据结构的基本概念和发展历程。
【第二章线性表】1. 线性表是由一组数据元素组成的数据结构,它的特点是元素之间存在着一对一的线性关系。
本章主要介绍了线性表的顺序存储结构和链式存储结构,以及它们的操作和应用。
【第三章栈与队列】1. 栈是一种特殊的线性表,它的特点是只能在表的一端进行插入和删除操作。
本章主要介绍了栈的顺序存储结构和链式存储结构,以及栈的应用场景。
2. 队列也是一种特殊的线性表,它的特点是只能在表的一端进行插入操作,而在另一端进行删除操作。
本章主要介绍了队列的顺序存储结构和链式存储结构,以及队列的应用场景。
【第四章串】1. 串是由零个或多个字符组成的有限序列,它是一种线性表的特例。
本章主要介绍了串的存储结构和基本操作,以及串的模式匹配算法。
【第五章数组与广义表】1. 数组是一种线性表的顺序存储结构,它的特点是所有元素都具有相同数据类型。
本章主要介绍了一维数组和多维数组的存储结构和基本操作,以及广义表的概念和表示方法。
【第六章树与二叉树】1. 树是一种非线性的数据结构,它的特点是一个节点可以有多个子节点。
本章主要介绍了树的基本概念和属性,以及树的存储结构和遍历算法。
2. 二叉树是一种特殊的树,它的每个节点最多只有两个子节点。
本章主要介绍了二叉树的存储结构和遍历算法,以及一些特殊的二叉树。
【第七章图】1. 图是一种非线性的数据结构,它由顶点集合和边集合组成。
本章主要介绍了图的基本概念和属性,以及图的存储结构和遍历算法。
【总结】1. 数据结构是计算机科学中非常重要的一门基础课程,它关注的是如何高效地组织和存储数据,以及如何通过算法进行数据的操作和处理。
本文对《数据结构》第二版严蔚敏的课后习题作业提供了参考答案,涵盖了第1-7章的内容。
大工15秋《数据结构》在线作业1满分答案
大工15秋《数据结构》在线作业1满分答案大工15秋《数据结构》在线作业1一单选题1.广义表((e))的表头是()。
A. eB. (e)C. ()D. (())正确答案:B2.在一个单链表中,若要在p所指向的结点之后插入一个新结点,则需要相继修改()个指针域的值。
A. 1B. 2C. 3D. 4正确答案:B3.在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为()。
A. (n+1)/2B. n/2C. nD. n+1正确答案:C4.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()。
A. head==NULLB. head→next==NULLC. head→next==headD. head!=NULL正确答案:B5.一个顺序栈S,元素a,b,c,d,e依次进栈,如果5个元素的出栈顺序为b,e,d,c,a,则顺序栈的容量至少应为()。
A. 2B. 3C. 4D. 5正确答案:C6.在表长为n的顺序表中,若在每个位置插入数据元素的概率相等,插入一个数据元素平均需要移动()个数据元素。
A. (n-1)/2B. n/2C. n-1D. n正确答案:B7.广义表L=(a,(b,c)),进行Tail(L)操作后的结果为()。
A. cB. b,cC.(b,c)D.((b,c))正确答案:D8.表达式a*(b+c)-d的后缀表达式是()。
A. abcd*+-B. abc+*d-C. abc*+d-D. -+*abcd精确谜底:B9.在一个单链表中,删除*p结点之后的一个结点的操作是()。
A. p->next=p;B. p->next->next=p->next;C. p->next->next=p;D. p->next=p->next->next;精确谜底:D10.最大容量为n的轮回行列,队尾指针是rear,队头是front,则队空的条件是()。
大工19春《数据结构》在线作业1【答案】
大工19春《数据结构》在线作业1【答案】大工19春《数据结构》在线作业1以下选项属于非线性结构的是()。
A.广义表B.队列C.优先队列D.栈正确答案:A在存储数据时,通常不仅需要存储数据元素的值,还要存储()。
A.数据元素的类型B.数据的基本运算C.数据元素之间的关系D.数据的存取方式正确答案:C以下选项属于逻辑结构的是()。
A.顺序表B.散列表C.有序表D.单链表正确答案:C一个递归算法必须包括()。
A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分正确答案:B算法的时间复杂度与()有关。
A.问题规模B.计算机硬件的运行速度C.源程序的长度D.编译后执行程序的质量正确谜底:A静态链表与静态链表比拟较,其缺点是()。
A.插入和删除需移动较多半据B.有大概浪费较多存储空间C.不能随机存取D.以上都不是正确谜底:B链式栈和顺序栈相比,有一个比较明显的优点,即()。
A.插入操作更加方便B.通常不会出现栈满的情况C.不会出现栈空的情况D.删除操作更加方便正确谜底:B链式栈的栈顶在链表的()位置。
A.链头B.链尾C.链中D.随便正确谜底:A栈和行列具有相同的()。
A.逻辑结构B.存储布局C.存取点D.运算正确答案:A计较机操作系统为了实现历程办理,采用了多种历程调度战略,先来先服务的战略使用了()作为算法实现的基础。
A.栈B.队列C.优先行列D.双端行列正确谜底:B数据元素是数据的最小单位。
T.对F.错正确谜底:B数据布局是指相互之间存在一种或多种干系的数据元素的部分。
T.对F.错正确谜底:B从逻辑干系上讲,数据布局主要分为线性布局和非线性布局两大类。
T.对F.错正确谜底:A算法不能没有输出,但可以没有输入。
T.对F.错正确谜底:B同一个算法,实现语言级别越高,算法执行的效率越低。
T.对F.错正确谜底:A算法中语句执行的频度就是算法的时间复杂度。
T.对F.错正确答案:B顺序表的主要缺点是实现线性表的插入或删除可能移动很多元素。
数据结构作业答案
数据结构作业答案单选题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)。
数据结构作业答案(大连理工大学)
作业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("查找失败。
[答案][北京语言大学]2020秋《数据结构》作业4
1.下列四种排序中()的空间复杂度最大。
[答案:D]A.插入排序B.冒泡排序C.堆排序D.归并排序2.在一个图中所有顶点的度数之和等于所有边数的()倍。
[答案:B]A.1/2B.2C.1D.43.顺序查找法适合于存储结构为()的线性表。
[答案:B]A.散列存储B.顺序存储或链式存储C.压缩存储D.索引存储4.由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()。
[答案:B]A.24B.71C.48D.535.下列说法中,不正确的是()。
[答案:D]A.数据元素是数据的基本单位B.数据项是数据中不可分割的最小可标识单位C.数据可由若干个数据元素构成D.数据项可由若干个数据元素构成6.设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行()趟的分配和回收才能使得初始关键字序列变成有序序列。
[答案:A]A.3B.4C.5D.87.如果最常用的操作是取第i个结点及其前驱,则采用()存储方式最节省时间。
[答案:D]A.单链表B.双链表C.单循环链表D.顺序表8.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有()个空指针域。
[答案:B]A.2m-1B.2mC.2m+1D.4m9.线性表的链接实现有利于()运算。
[答案:A]A.插入B.读表元C.查找D.定位10.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。
[答案:D]A.单链表B.给出表头指针的单循环链表C.双链表D.带头结点的双循环链表11.设某棵二叉树中有2000个结点,则该二叉树的最小高度为()。
[答案:C]A.9B.10C.11D.1212.若有18个元素的有序表存放在一堆数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A3的比较序列的下标依次为()。
[答案:D]A.1,2,3B.9,5,2,3C.9,5,3D.9,4,2,313.若已知一个栈序列是1,2,3,...,n,其输出序列为p1,p2,p3,...,pn,若p1=n,则pi为()。
数据结构作业及答案
第一章绪论一、选择题1.数据结构是一门研究非数值计算的程序设计问题中计算机的1以及它们之间的2和运算等的学科。
1 A.数据元素 B.计算方法 C.逻辑存储 D.数据映像2 A.结构 B.关系 C.运算 D.算法2.数据结构被形式地定义为(K, R),其中K是1的有限集,R是K上的2有限集。
1 A.算法 B.数据元素 C.数据操作 D.逻辑结构2 A.操作 B.映像 C.存储 D.关系3.在数据结构中,从逻辑上可以把数据结构分成。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4.线性结构的顺序存储结构是一种1的存储结构,线性表的链式存储结构是一种2的存储结构。
A.随机存取 B.顺序存取 C.索引存取 D.散列存取5.算法分析的目的是1,算法分析的两个主要方面其一是指2,其二是指正确性和简单性。
1 A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性2 A.空间复杂度和时间复杂度 B.研究算法中的输入和输出的关系C.可读性和文档性D.数据复杂性和程序复杂性k6.计算机算法指的是1,它必须具备输入、输出和2等5个特性。
1 A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法2 A.可执行性、可移植性和可扩充性 B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性7.线性表的逻辑顺序与存储顺序总是一致的,这种说法。
A.正确 B.不正确8线性表若采用链式存储结构时,要求内存中可用存储单元的地址。
A.必须连续的B.部分地址必须连续的C.一定是不续的D连续不连续都可以9.以下的叙述中,正确的是。
A.线性表的存储结构优于链式存储结构 B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出10.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法。
《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)
第1章4.答案:(1)顺序存储结构顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。
(2)链式存储结构顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。
但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。
所以链式存储结构通常借助于程序设计语言的指针类型来描述。
5. 选择题(1)~(6):CCBDDA\6.(1)O(1) (2)O(m*n) (3)O(n2)(4)O(log3n) (5)O(n2) (6)O(n)(第2章1.选择题(1)~(5):BABAD (6)~(10): BCABD (11)~(15):CDDAC\2.算法设计题(1)将两个递增的有序链表合并为一个递增的有序链表。
要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。
表中不允许有重复的数据。
[题目分析]合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。
如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。
当一个表到达表尾结点,为空时,将非空表的剩余元素直接链接在Lc表的最后。
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){法设计题(1)将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。
当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈顶指针top[1]等于m时该栈为空。
两个栈均从两端向中间增长。
试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。
数据结构题及参考答案
数据结构作业题作业题(一)一、单项选择题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.数据结构中,与所使用的计算机无关的是数据的(B)。
选择一项:A. 物理和存储结构B. 逻辑结构C. 物理结构D. 存储结构2.组成数据的基本单位是(B)。
选择一项:A. 数据类型B. 数据变量C. 数据元素D. 数据项3.研究数据结构就是研究(D)。
选择一项:A. 数据的逻辑结构B. 数据的逻辑结构和存储结构C. 数据的存储结构D. 数据的逻辑结构和存储结构以及其数据在运算上的实现4.在数据结构中,从逻辑上可以把数据结构分成(A)。
选择一项:A. 线性结构和非线性结构B. 动态结构和静态结构C. 内部结构和外部结构D. 紧凑结构和非紧凑结构5.数据结构是一门研究计算机中(B)对象及其关系的科学。
选择一项:A. 数值运算B. 非数值运算C. 非集合D. 集合6.下列说法不正确的是(C )。
选择一项:A. 数据元素是数据的基本单位B. 数据项是数据中不可分割的最小可标识单位C. 数据项可由若干个数据元素构成D. 数据可由若干个数据元素构成7.设有如下遗产继承规则:丈夫和妻子可以互相继承遗产,子女可以继承父亲和母亲的遗产,子女间不能相互继承,则表示该遗产继承关系最合适的数据结构应该是(D)结构。
选择一项:A. 线性B. 集合C. 树形D. 图状8.算法的时间复杂度与(B)有关。
A. 所使用的计算机B. 算法本身C. 算法的程序设计D. 数据结构9.算法分析的两个主要方面是(C)。
选择一项:A. 数据复杂性和程序复杂性B. 正确性和简明性C. 时间复杂性和空间复杂性D. 可读性和文档性10.数据的存储结构包括数据元素的表示和(B)。
选择一项:A. 相关算法B. 数据元素间关系的表示C. 数据处理的方法D. 数据元素的类型11.数据元素是数据的最小单位(错)。
选择一项:对错12.数据的逻辑结构是指数据的各数据项之间的逻辑关系(错)。
对错13.算法的优劣与算法描述语言无关,但与所用计算机有关(错)。
选择一项:对错14.算法是在数据结构的基础上对特定问题求解步骤的一种描述,也是若干条指令组成的优先序列(对)。
数据结构作业答案
1:41.如果待排序序列中两个数据元素具有相同的值,在排序后它们的位置发生颠倒,则称该排序是不稳定的。
()就是不稳定的排序方法。
1.起泡排序2.归并排序3.直接插入法排序4.简单选择排序2:8 带头结点的单链表head为空的判断条件是( )。
1.head==NULL2.head->next==NULL3. head->next==head4. head!=NULL3:9 在单链表中增加头结点的目的是为了( )。
1.方便运算的实现2.用于标识单链表3.使单链表中至少有一个结点4.用于标识起始结点的位置4:46 下列四个关键字序列中,( )不是堆。
1. {05,23,16,68,94,72,71,73}2.{05,16,23,68,94,72,71,73}3. {05,23,16,73,94,72,71,68}4.{05,23,16,68,73,71,72,94}5:20.设输入序列为1,2,3,4,5,借助一个栈可以得到的输出序列是( )。
1.2,4,1,3,52.3,4,1,5,23.3,2,4,1,54.4,1,3,2,56:50 对有n个记录的表按记录键值有序建立二叉排序树,在这种情况下,其平均查找长度的量级为()。
1.O(n)2.O(nlog2n)3.O(1)4. O(log2n)7:37.用分划交换排序方法对包含有n个关键的序列进行排序,最坏情况下执行的时间杂度为( )。
1.O(n)2. O(log2n)3.O(nlog2n)4. O(n2)8:38.邻接表的存储结构下图的深度优先遍历类似于二叉树(树)的( )。
1.先序遍历2.中序遍历3.后序遍历4.按层遍历9:48 对有n个记录的有序表采用二分查找,其平均查找长度的量级为()。
1. O(log2n)2.O(nlog2n)3.O(n)4. O(n2)10:2 线性表是具有n个( )的有限序列。
1.表元素2.字符3.数据元素4.信息项11:15 在一个单链表中,若删除(*p)结点的后继结点,则执行( )。
数据结构作业解答
第一章作业一、选择题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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章 作业答案(1)
typedef struct{ int Key; InfoType info; }ElemType; void SqPartition(SqList &L) { int i,j; ElemType temp1,temp2; temp1=L.elem[0]; //初始分界元素在下标0的位置 for(i=1;i<L.length;i++) if(L.elem[i].key<temp1.key) // 小于分界元素 { temp2=L.elem[i]; //暂存temp2中 for(j=i;j>0;j--) L.elem[j]=L.elem[j-1]; // L.elem[i]左方的元素右移一 位 L.elem[0]=temp2; // L->elem[i]放到最左方 } }
第1章 绪论
5.按照数据结构的图示,写出其数学表示。
1 2 6 3 4
8 9
7
5
第1章 绪论
6.求下面程序的时间复杂度。
(1) s=0; for(i=0;i<n;i++) for(j=0;j<m;j++) s+=B[i][j]; (2) i=1; while(i<=n) i*=3; (3) i=s=0; while(s<n) { i++; s+=i; }
第2章 作业答案(2)
void LkPartition(LinkList &L) { LNode *p,*q,*temp; temp=p=head; //分界结点为初始时的链头结点 while(p->next) /*当链表未完*/ if(p->next->data.key<temp->data.key) //当前 结点较小 { q=p->next; //当前结点暂存指针q 中 p->next=q->next; //从链表中删去结点p q->next=L; //将结点q与链头指针head 链接 L=q; //结点q做新链头 } else p=p->next //指针后移 }
数据结构(Data Structure )
作
业
第1章 绪论
1.简述下列术语:数据元素、数据项、数据对象、数据结构、 逻辑结构结构、物理结构、数据类型。 2.什么是算法?算法有哪些特性?如何判断一个算法的好坏? 3.由大到小排列以下函数的复杂度: 2100,(3/2)n,(2/3)n,log2n,log2(log2n),n,n2,n!, n2/3,n3,n3/2 4.按照数据结构的数学表示,画出其图示。 B=( D,S) D={k1,k2,k3, …,k9} S={<k1,k3>,<k1,k8>,<k2,k3>,<k2,k4>,<k2,k5>, <k3,k9>, <k4,k7>,<k4,k6>,<k5,k6>, <k8,k9>,<k9,k7>}
1. 将线性表中的元素以第一个元素 的key为界划分成两部分,要求排在 分界元素之前的元素,其key值都比 分界元素小,而排在其后的元素,其 key值都比分界元素大。 2. 以链表的表头元素为界把链表划 分成两部分,要求链接在分界元素之 前的元素,其key值都比分界元素小, 而链接在其后的元素,其key值都比 分界元素大。
4. 编写递归函数完成下面公式的计算。 g(m,n)= 0 m=0,n>=0 g(m-1,2n)+n m>0,n>=0 5. 假设称正读和反读都相同的字符序列称为“回文”,例如 “abba”和“abcba”是回文,“abcde”和“ababab”则不是回文。试 写一个算法判别读入的一个以‘’为结束符的字符序列是否为回文。
第3章 栈与队列
1. 若按右图所示的铁路调度栈 进行车厢调度(两侧铁道均为单 向行使道)请回答:
(1)如果进站的车厢序列为123,则 可能得到的出站车厢序列是什么? (2)如果进站的车厢序列为123456, 则能否得到435612和135426的出站序 列,并说明不能得到或者如何得到 (写出以S表示进栈和以X表示出栈的 操作序列)。 (3)假设调度栈入口处有节硬席车 厢或软席车厢(分别以和表示)等待 调度,编写算法,输出对这节车厢进 行调度的操作(即入栈和出栈操作) 序列,以使所有的硬席车厢都被调整 到软席车厢前面。
第3章 栈与队列(1) 1.
(1)123,132,213,231,321 (2)
435612不行,因为操作序列为SSSSXXSXSX后栈 只剩下1和2,而2位于栈顶,因此必须2先出栈。 135426可以。操作序列为SXSSXSSXXXSX。
第3章 栈与队列(1)
1.(3) #include <iostream.h> #include "sqstack.h" const N=10; void DiaoDu(char s[],char t[]) { SqStack S; SElemType e; int i=0; InitStack_Sq(S,N); while(*s){ Push_Sq(S,*s); cout<<"Push "; if(*s==‘H') { Pop_Sq(S,e); cout<<"Pop "; t[i++]=e; } s++; }//while while(!StackEmpty_Sq(S)){ Pop_Sq(S,e); cout<<"Pop "; t[i++]=e;} t[i]='\0'; }//HuiWen void main(void) { char s[N]="HSHSSSHSH",t[N]; DiaoDu(s,t); cout<<"\nBegin:"<<s<<"\nEnd:"<<t<<endl; }
第1章 作业答案
1. 2. 略 3. 由大到小排列以下函数的复杂度:
n!>2n>(3/2)n>n3>n2>n3/2 >n>n2/3>log2n>log2(log2n) >(2/3)n
4. 5. 略 6.
O(m*n) O(log3n) O(n)
第2章 线性表(Linear List)
出栈
进栈
第3章 栈与队列
2. 计算下列表达式的值:
(1)前缀表达式:**7 6-/8 2 1 (2)中缀表达式:8*9-(16-4)/2+5 (3)后缀表达式:5 7 6*8 2+5/-*
3. 进行表达式的转换:
(1)前缀:/+-+A B*C+D E F+G* H I,转中缀、后缀 (2)中缀:(A+B)*D+E/(F+A*D)+C,转前缀、后缀 (3)后缀:A C –D/E A B*F+/+,转前缀序、中缀