浙大远程数据结构与算法离线答案-完整版
数据结构与算法离线作业题目及答案
浙江大学远程教育学院《数据结构与算法》课程离线作业姓名:陈翠学号:713009014001年级:2013秋学习中心:金华学习中心—————————————————————————————一、填空题:(【序号,章,节】。
)【1,1,2】线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
【2,1,2】为了最快地存取数据元素,物理结构宜采用顺序存储结构。
【3,1,2】存储结构可根据数据元素在机器中的位置是否一定连续分为顺序存储结构___,链式存储结构___。
【4,1,3】度量算法效率可通过时间复杂度___来进行。
【5,1,3】设n 为正整数,下面程序段中前置以记号@的语句的频度是n(n+1)/2 。
for (i=0; i<n; i++){for (j=0; j<n; j++)if (i+j==n-1)@ a[i][j]=0;}【6,1,3】设n 为正整数,试确定下列各程序段中前置以记号@的语句的频度:(1) i=1; k=0;while (i<=n-1){i++;@ k+=10 * i; // 语句的频度是_________n-1_______________。
}(2) k=0;1for (i=1; i<=n; i++){for (j=i; j<=n; j++)@ k++; // 语句的频度是_________n(n+1)/2________________。
}【7,3,2】线性表(a1,a2,…,a n)有两种存储结构:顺序存储结构和链式存储结构,请就这两种存储结构完成下列填充:___顺序_ 存储密度较大;___顺序____存储利用率较高;___顺序____可以随机存取;__链式_____不可以随机存取;__链式____插入和删除操作比较方便。
【8,3,2】从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动n-i 个元素。
浙大远程操作系统原理离线作业及答案
浙⼤远程操作系统原理离线作业及答案操作系统原理离线作业⼀、单选题1.进程P0和P1的共享变量定义及其初值为boolean flag[2];int turn=0;flag[0]=FALSE;flag[1]=FALSE;若进程P0和P1访问临界资源的类C代码实现如下:void P0() //P0进程{ while(TURE){flag[0]=TRUE; turn = 1;while (flag[1] && turn == 1) ;临界区;flag[0] = FALSE;}}void P1() //P1进程{ while(TURE){flag[1]=TRUE; turn = 0;while (flag[0] && turn == 0) ;临界区;flag[1] = FALSE;}}则并发执⾏进程P0和P1时产⽣的情况是:DA.不能保证进程互斥进⼊临界区、会出现“饥饿”现象B.不能保证进程互斥进⼊临界区、不会出现“饥饿”现象C.能保证进程互斥进⼊临界区、会出现“饥饿”现象 D.能保证进程互斥进⼊临界区、不会出现“饥饿”现象2.有两个进程P1和P2描述如下:shared data:int counter = 6;P1 :Computing;counter=counter+1;P2 :counter=counter-2;两个进程并发执⾏,运⾏完成后,counter的值不可能为 C 。
A. 4B. 5C. 6D. 73.某计算机采⽤⼆级页表的分页存储管理⽅式,按字节编址,页⼤⼩为210字节,页表项⼤⼩为2字节,逻辑地址结构为:页⽬录号页号页内偏移量逻辑地址空间⼤⼩为216页,则表⽰整个逻辑地址空间的页⽬录表中包含表项的个数⾄少是BA.64 B.128 C.256 D.5124.在动态分区系统中,有如下空闲块:空闲块块⼤⼩(KB)块的基址1 80 602 75 1503 55 2504 90 350此时,某进程P请求50KB内存,系统从第1个空闲块开始查找,结果把第4个空闲块分配给了P进程,请问是⽤哪⼀种分区分配算法实现这⼀⽅案? CA.⾸次适应B. 最佳适应C. 最差适应D. 下次适应5.在⼀页式存储管理系统中,页表内容如下所⽰。
2014--浙江大学远程教育学院在线作业数据结构与算法100分讲解
您的本次作业分数为:100分单选题1.设散列表长为14,散列函数是H(key)=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为49的结点加到表中,用二次探测法解决冲突,则放入的位置是____________。
A 8B 3C 5D 9正确答案:D单选题2.下列排序算法的时间复杂度最小的是____。
A 冒泡排序B 希尔排序C 简单选择排序D 归并排序正确答案:D单选题3.带头结点的单链表Head为空表的判定条件是______。
A Head->next==HeadB Head->next==NULLC Head!=NULLD Head==NULL正确答案:B4.若用二分查找法取得的中间位置元素键值大于被查找值,说明被查找值位于中间值的前面,下次的查找区间为从原开始位置至____。
A 该中间位置B 该中间位置-1C 该中间位置+1D 该中间位置/2正确答案:B单选题5.一组记录的关键字为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准元素得到的一次划分结果为。
A 38,40,46,56,79,84B 40,38,46,79,56,84C 40,38,46,56,79,84D 40,38,46,84,56,79正确答案:C单选题6.下面关于图的存储的叙述中,哪一个是正确的?A 用相邻矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关B 用相邻矩阵法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关C 用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关D 用邻接表法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关正确答案:A7.具有5个顶点的有向完全图有____条弧。
A 10B 16C 20D 25正确答案:C单选题8.数据结构课程主要研究以下三方面的内容,它们是______。
A 数据、数据元素、数据类型B 数据元素、数据类型、算法实现C 数据元素、数据的逻辑结构、数据的存储结构D 数据的逻辑结构、数据的存储结构、数据的运算正确答案:D单选题9.设二叉树根结点的层次为1,所有含有15个结点的二叉树中,最小高度是_____。
算法与数据结构智慧树知到课后章节答案2023年下浙江理工大学
算法与数据结构智慧树知到课后章节答案2023年下浙江理工大学浙江理工大学绪论单元测试1.学好算法与数据结构的关键在于多多实践。
答案:对第一章测试1.数据结构是()答案:相互之间存在一种或多种特定关系的数据元素的集合2.下列说法错误的是()答案:数据在计算机存储器内的存在形式称为机外表示3.算法的描述方法只有语言方式。
答案:错4.下列关于算法说法错误的是()答案:算法就是数学中的计算方法5.有哪几种存储结构?答案:索引存储方式;散列存储方式;顺序存储方式;链式存储方式6.算法的效率主要是指()答案:算法的空间效率和时间效率7.在数据结构的讨论中把数据结构从逻辑上分为()答案:线性结构与非线性结构8.指出下列程序段的时间复杂度()sum=1;for (i=0;sum<n;i++)sum+=1;答案:O(n)9.树形结构中元素之间存在()关系答案:一对多10.图形结构中元素之间存在()关系答案:多对多第二章测试1.带头结点的单链表head为空的判定条件是()答案:head->next= =NULL2.循环链表的主要优点是()。
答案:在表中任一结点出发都能扫描整个链表3.线性表若采用链式存储结构时,要求内存中可用存储单元的地址()答案:连续或不连续都可以4.若一个线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。
答案:顺序表5.在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需向后移动()个元素答案:n-i+16.线性表的顺序存储结构是一种()存储结构。
答案:随机存取7.在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是()。
答案:q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;8.在下列对顺序表进行的操作中,算法时间复杂度为O(1)的是()。
数据结构与算法离线作业 答案知识讲解
数据结构与算法离线作业答案浙江大学远程教育学院《数据结构与算法》课程离线作业姓名:陈翠学号:713009014001年级:2013秋学习中心:金华学习中心—————————————————————————————一、填空题:(【序号,章,节】。
)【1,1,2】线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
【2,1,2】为了最快地存取数据元素,物理结构宜采用顺序存储结构。
【3,1,2】存储结构可根据数据元素在机器中的位置是否一定连续分为顺序存储结构___,链式存储结构___。
【4,1,3】度量算法效率可通过时间复杂度___来进行。
【5,1,3】设n 为正整数,下面程序段中前置以记号@的语句的频度是n(n+1)/2 。
for (i=0; i<n; i++){for (j=0; j<n; j++)if (i+j==n-1)@ a[i][j]=0;}【6,1,3】设n 为正整数,试确定下列各程序段中前置以记号@的语句的频度:收集于网络,如有侵权请联系管理员删除(1) i=1; k=0;while (i<=n-1){i++;@ k+=10 * i; // 语句的频度是_________n-1_______________。
}(2) k=0;for (i=1; i<=n; i++){for (j=i; j<=n; j++)@ k++; // 语句的频度是_________n(n+1)/2________________。
}【7,3,2】线性表(a1,a2,…,a n)有两种存储结构:顺序存储结构和链式存储结构,请就这两种存储结构完成下列填充: ___顺序_ 存储密度较大;___顺序____存储利用率较高;___顺序____可以随机存取;__链式_____不可以随机存取;__链式____插入和删除操作比较方便。
【8,3,2】从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动n-i 个元素。
数据结构与算法设计课后习题及答案详解
第一章1.数据结构研究的主要内容包括逻辑结构、存储结构和算法。
2.数据元素是数据的基本单位,数据项是数据的最小标示单位。
3.根据数据元素之间关系的不同,数据的逻辑结构可以分为集合、树形、线性、图状。
4.常见的数据存储结构有四种类型:顺序、链式、索引、散列。
5.可以从正确性、可读性、健壮性、高效性四方面评价算法的质量。
6.在一般情况下,一个算法的时间复杂度是问题规模的函数。
7.常见时间复杂度有:常数阶O(1)、线性阶O(n)、对数阶O(log2 n)、平方阶O(n²)和指数阶O(2ⁿ)。
通常认为,具有常数阶量级的算法是好算法,而具有指数阶量级的算法是差算法。
8.时间复杂度排序由大到小(n+2)!>2ⁿ+²>(n+2)4次方>nlog2 n>100000.问答题:1.什么叫数据元素?数据元素是数据的基本单位,是数据这个集合的个体,也称为元素、结点、顶点、记录。
2.什么叫数据逻辑结构?什么叫数据存储结构?数据逻辑结构:指数据元素之间存在的固有的逻辑结构。
数据存储结构:数据元素及其关系在计算机内的表示。
3.什么叫抽象数据类型?抽象数据类型是指数据元素集合以及定义在该集合上的一组操作。
4.数据元素之间的关系在计算机中有几种表示方法?顺序、链式、索引、散列。
5.数据的逻辑结构与数据的存储结构之间存在着怎样的关系?相辅相成,不可分割。
6.什么叫算法?算法的性质有哪些?算法:求解问题的一系列步骤的集合。
可行性、有容性、确定性、有输入、有输出。
7.评价一个算法的好坏应该从哪几方面入手?正确性、可读性、健壮性、高效性。
第二章1.线性表中,第一个元素没有直接前驱,最后一个元素没有直接后继。
2.线性表常用的两种存储结构分别是顺序存储结构和链式存储结构。
3.在长度为n的顺序表中,插入一个新元素平均需要移动表中的n/2个元素,删除一个元素平均需要移动(n-1)/2个元素。
4.在长度为n的顺序表的表头插入一个新元素的时间复杂度为O(n),在表尾插入一个新元素的时间复杂度为O(1)。
《数据结构与算法》课后习题答案
2.3 课后习题解答2.3.2 判断题1.线性表的逻辑顺序与存储顺序总是一致的。
(×)2.顺序存储的线性表可以按序号随机存取。
(√)3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。
(×)4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。
(√)5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。
(×)6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
(√)7.线性表的链式存储结构优于顺序存储结构。
(×)8.在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。
(√)9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
(√)10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。
(×)11.静态链表既有顺序存储的优点,又有动态链表的优点。
所以它存取表中第i个元素的时间与i无关。
(×)12.线性表的特点是每个元素都有一个前驱和一个后继。
(×)2.3.3 算法设计题1.设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。
试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂度。
【提示】直接用题目中所给定的数据结构(顺序存储的思想是用物理上的相邻表示逻辑上的相邻,不一定将向量和表示线性表长度的变量封装成一个结构体),因为是顺序存储,分配的存储空间是固定大小的,所以首先确定是否还有存储空间,若有,则根据原线性表中元素的有序性,来确定插入元素的插入位置,后面的元素为它让出位置,(也可以从高下标端开始一边比较,一边移位)然后插入x ,最后修改表示表长的变量。
int insert (datatype A[],int *elenum,datatype x) /*设elenum为表的最大下标*/ {if (*elenum==arrsize-1) return 0; /*表已满,无法插入*/else {i=*elenum;while (i>=0 && A[i]>x) /*边找位置边移动*/{A[i+1]=A[i];i--;}A[i+1]=x; /*找到的位置是插入位的下一位*/(*elenum)++;return 1; /*插入成功*/}}时间复杂度为O(n)。
浙大远程数据结构与算法离线答案-最完整版DOC
浙江大学远程教育学院《数据结构与算法》课程离线作业一、填空题:(【序号,章,节】。
)【1,1,2】线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
【2,1,2】为了最快地存取数据元素,物理结构宜采用序存储结构。
3,1,2】数据结构的三要素是逻辑结构,物理结构,操作。
【3,1,2】存储结构可根据数据元素在机器中的位置是否一定连续分为顺序存储结构,链式存储结构。
【4,1,3】度量算法效率可通过时间复杂度和空间复杂度__来进行。
【5,1,3】设n 为正整数,下面程序段中前置以记号@的语句的频度是n(n+1)/2。
for (i=0; i<n; i++){for (j=0; j<n; j++)if (i+j==n-1)@ a[i][j]=0;}【6,1,3】设n 为正整数,试确定下列各程序段中前置以记号@的语句的频度:(1) i=1; k=0;while (i<=n-1){i++;@ k+=10 * i; // 语句的频度是_____ n-1_______________。
}(2) k=0;for (i=1; i<=n; i++){for (j=i; j<=n; j++)1@ k++; // 语句的频度是_____ n(n+1)/2________________。
}【7,3,2】线性表(a1,a2,…,a n)有两种存储结构:顺序存储结构和链式存储结构,请就这两种存储结构完成下列填充:_顺序存储结构__ 存储密度较大;_顺序存储结构___存储利用率较高;_顺序存储结构___可以随机存取;_链式存储结构____不可以随机存取;__链式存储结构__插入和删除操作比较方便。
【8,3,2】从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动n-i个元素。
【9,3,2】带头结点的单链表Head为空的条件是____ Head->next==null_____【10,3,2】在一个单链表中p所指结点(p所指不是最后结点)之后插入一个由指针s所指结点,应执行s->next=__ p->next___;和p->next=___s _____的操作。
数据结构与算法习题册参考答案
数据结构与算法习题册(课后部分参考答案)《数据结构与算法》课程组目录目录课后习题部分第一章绪论 (1)第二章线性表 (3)第三章栈和队列 (5)第四章串 (8)第五章数组和广义表 (10)第六章树和二叉树 (13)第七章图 (16)第九章查找 (20)第十章排序 (23)第一章绪论一. 填空题1. 从逻辑关系上讲,数据结构的类型主要分为集合、线性结构、树结构和图结构。
2. 数据的存储结构主要有顺序存储和链式存储两种基本方法,不论哪种存储结构,都要存储两方面的内容:数据元素和数据元素之间的关系。
3. 算法具有五个特性,分别是有穷性、确定性、可行性、输入、输出。
4. 算法设计要求中的健壮性指的是算法在发生非法操作时可以作出处理的特性。
二. 选择题1. 顺序存储结构中数据元素之间的逻辑关系是由 C 表示的,链接存储结构中的数据元素之间的逻辑关系是由 D 表示的。
A 线性结构B 非线性结构C 存储位置D 指针2. 假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是B 。
A 树B 图C 线性表D 集合3. 算法指的是 A 。
A 对特定问题求解步骤的一种描述,是指令的有限序列。
B 计算机程序C 解决问题的计算方法D 数据处理三. 简答题1. 分析以下各程序段,并用大O记号表示其执行时间。
(1) (2)i=1;k=0; i=1;k=0;While(i<n-1) do{ {k=k+10*i; k=k+10*i;i++; i++;} }while(i<=n)⑴基本语句是k=k+10*i,共执行了n-2次,所以T(n)=O(n)。
⑵基本语句是k=k+10*i,共执行了n次,所以T(n)=O(n)。
2. 设有数据结构(D,R),其中D={1, 2, 3, 4, 5, 6},R={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)}。
浙大远程教育操作系统原理离线作业参考答案
浙江大学远程教育学院《操作系统原理》课程作业姓名:学号:年级:学习中心:—————————————————————————————一、单选题1.进程P0和P1的共享变量定义及其初值为boolean flag[2];int turn=0;flag[0]=FALSE;flag[1]=FALSE;若进程P0和P1访问临界资源的类C代码实现如下:void P0() //P0进程{ while(TURE){flag[0]=TRUE; turn = 1;while (flag[1] && turn == 1) ;临界区;flag[0] = FALSE;}}void P1() //P1进程{ while(TURE){flag[1]=TRUE; turn = 0;while (flag[0] && turn == 0) ;临界区;flag[1] = FALSE;}}则并发执行进程P0和P1时产生的情况是:DA.不能保证进程互斥进入临界区、会出现“饥饿”现象B.不能保证进程互斥进入临界区、不会出现“饥饿”现象C.能保证进程互斥进入临界区、会出现“饥饿”现象D.能保证进程互斥进入临界区、不会出现“饥饿”现象2.有两个进程P1和P2描述如下:shared data:int counter = 6;P1 :Computing;counter=counter+1;P2 :Printing;counter=counter-2;两个进程并发执行,运行完成后,counter的值不可能为C。
A. 4B. 5C. 6D. 73.某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为210字节,页表项大小为2字节,逻辑地址结构为:页目录号页号页内偏移量逻辑地址空间大小为216页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是BA.64 B.128 C.256 D.5124.在动态分区系统中,有如下空闲块:空闲块块大小(KB)块的基址1 80 602 75 1503 55 2504 90 350此时,某进程P请求50KB内存,系统从第1个空闲块开始查找,结果把第4个空闲块分配给了P进程,请问是用哪一种分区分配算法实现这一方案? CA.首次适应B. 最佳适应C. 最差适应D. 下次适应5.在一页式存储管理系统中,页表内容如下所示。
数据结构与算法离线作业题目及标准答案
数据结构与算法离线作业题目及标准答案————————————————————————————————作者:————————————————————————————————日期:2浙江大学远程教育学院《数据结构与算法》课程离线作业姓名:陈翠学号:713009014001年级:2013秋学习中心:金华学习中心—————————————————————————————一、填空题:(【序号,章,节】。
)【1,1,2】线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
【2,1,2】为了最快地存取数据元素,物理结构宜采用顺序存储结构。
【3,1,2】存储结构可根据数据元素在机器中的位置是否一定连续分为顺序存储结构___,链式存储结构___。
【4,1,3】度量算法效率可通过时间复杂度___来进行。
【5,1,3】设n 为正整数,下面程序段中前置以记号@的语句的频度是n(n+1)/2 。
for (i=0; i<n; i++){for (j=0; j<n; j++)if (i+j==n-1)@ a[i][j]=0;}【6,1,3】设n 为正整数,试确定下列各程序段中前置以记号@的语句的频度:(1) i=1; k=0;while (i<=n-1){i++;@ k+=10 * i; // 语句的频度是_________n-1_______________。
}(2) k=0;for (i=1; i<=n; i++){3for (j=i; j<=n; j++)@ k++; // 语句的频度是_________n(n+1)/2________________。
}【7,3,2】线性表(a1,a2,…,a n)有两种存储结构:顺序存储结构和链式存储结构,请就这两种存储结构完成下列填充:___顺序_ 存储密度较大;___顺序____存储利用率较高;___顺序____可以随机存取;__链式_____不可以随机存取;__链式____插入和删除操作比较方便。
《数据结构与算法》课后习题答案
2.3 课后习题解答2.3.2 判断题1.线性表的逻辑顺序与存储顺序总是一致的。
(×)2.顺序存储的线性表可以按序号随机存取。
(√)3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。
(×)4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。
(√)5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。
(×)6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
(√)7.线性表的链式存储结构优于顺序存储结构。
(×)8.在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。
(√)9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
(√)10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。
(×)11.静态链表既有顺序存储的优点,又有动态链表的优点。
所以它存取表中第i个元素的时间与i无关。
(×)12.线性表的特点是每个元素都有一个前驱和一个后继。
(×)2.3.3 算法设计题1.设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。
试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂度。
【提示】直接用题目中所给定的数据结构(顺序存储的思想是用物理上的相邻表示逻辑上的相邻,不一定将向量和表示线性表长度的变量封装成一个结构体),因为是顺序存储,分配的存储空间是固定大小的,所以首先确定是否还有存储空间,若有,则根据原线性表中元素的有序性,来确定插入元素的插入位置,后面的元素为它让出位置,(也可以从高下标端开始一边比较,一边移位)然后插入x ,最后修改表示表长的变量。
int insert (datatype A[],int *elenum,datatype x) /*设elenum为表的最大下标*/ {if (*elenum==arrsize-1) return 0; /*表已满,无法插入*/else {i=*elenum;while (i>=0 && A[i]>x) /*边找位置边移动*/{A[i+1]=A[i];i--;}A[i+1]=x; /*找到的位置是插入位的下一位*/(*elenum)++;return 1; /*插入成功*/}}时间复杂度为O(n)。
浙江大学远程教育——数据库技术离线作业第2次
浙江大学远程教育——数据库技术离线作业第2次填空题:注:空白下划线处为需要填充的部分。
带下划线部分为考试时可能出题的部分,需要重点注意。
另外,这些填空题也有可能会被改编为选择题出现。
1.事务的隔离性:按任何一个串行顺序依次执行多个事务也是正确的。
事务的交叉执行过程是正确的,当且仅当其与串行执行过程等价,则称事务是可串行化的。
2.并发控制的基本思想是封锁。
封锁的基本思想是:当需要查询或更新数据时,先对数据进行封锁(不允许其他事务使用),以避免来自其他事务的干扰。
封锁——不允许其他事务使用,降低了事务执行的效率;为了既保证隔离又保证效率针对不同的干扰问题采取不同的封锁机制。
封锁机制的目标:保证事务的隔离性,并且允许最大量的并发事务。
分为3种:共享封锁、独占封锁、更新封锁。
3.避免死锁的主要方法有两种:一是相同顺序法,即在设计阶段规定所有的事务都按相同的顺序来封锁表;一是一次封锁法,即在设计阶段规定为了完成一个事务,一次性封锁所需要的全部表。
4.诊断死锁的方法主要有两种:超时法、等待图法。
解决死锁的办法就是破坏事务等待图中的回路。
5.在SQL标准中是通过设置隔离级别来实现并发控制的。
隔离级别由弱到强是:未提交读、提交读、可重复读、可串行化。
6.关系模型设计“不好”导致的问题:数据冗余问题、数据更新问题、数据插入问题、数据删除问题。
7.如果X→Y,但Y不包含于X,则称X→Y是非平凡的函数依赖。
如果X→Y,则X称作决定因素。
如果K是关系模式R(U,F)的任一候选关键字,X是任一属性或属性集,如果X K,则X称为主属性;否则称为非主属性。
8.如果X→Y,并且Y→X,则可记作X←→Y,这时X和Y可以称做函数等价。
9.如果X→Y,并且对于X的一个任意真子集X/,Y都不函数依赖于X/,则称Y完全依赖于X;如果存在X/ →Y,则称Y部分依赖于X。
10.如果X→Y(非平凡函数依赖,并且X不函数依赖于Y)、Y→Z,则称Z传递函数依赖于X。
《数据结构与算法》课后习题答案教学教材
《数据结构与算法》课后习题答案2.3 课后习题解答2.3.2 判断题1.线性表的逻辑顺序与存储顺序总是一致的。
(×)2.顺序存储的线性表可以按序号随机存取。
(√)3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。
(×)4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。
(√)5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。
(×)6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
(√)7.线性表的链式存储结构优于顺序存储结构。
(×)8.在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。
(√)9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
(√)10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。
(×)11.静态链表既有顺序存储的优点,又有动态链表的优点。
所以它存取表中第i个元素的时间与i无关。
(×)12.线性表的特点是每个元素都有一个前驱和一个后继。
(×)2.3.3 算法设计题1.设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。
试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂度。
【提示】直接用题目中所给定的数据结构(顺序存储的思想是用物理上的相邻表示逻辑上的相邻,不一定将向量和表示线性表长度的变量封装成一个结构体),因为是顺序存储,分配的存储空间是固定大小的,所以首先确定是否还有存储空间,若有,则根据原线性表中元素的有序性,来确定插入元素的插入位置,后面的元素为它让出位置,(也可以从高下标端开始一边比较,一边移位)然后插入x ,最后修改表示表长的变量。
《数据结构与算法》课后习题答案
《数据结构与算法》课后习题答案一、算法分析和复杂度1.1 算法复杂度的定义算法的复杂度是指算法所需资源的度量,包括时间复杂度和空间复杂度。
时间复杂度描述了算法的执行时间随输入规模增长的增长速度,空间复杂度描述了算法执行期间所需的存储空间随输入规模增长的增长速度。
1.2 时间复杂度的计算方法时间复杂度可以通过估算算法的执行次数来计算。
对于循环结构,通常可以通过循环体内代码的执行次数来估算时间复杂度。
对于递归算法,则可以通过递归的深度和每次递归的复杂度来计算时间复杂度。
1.3 常见的时间复杂度在算法分析中,常见的时间复杂度有:O(1)、O(log n)、O(n)、O(n log n)、O(n^2)、O(n^3)等。
其中,O(1)表示算法的执行时间与输入规模无关,即常数时间复杂度;O(log n)表示算法的执行时间随输入规模呈对数增长;O(n)表示算法的执行时间随输入规模呈线性增长;O(nlog n)表示算法的执行时间随输入规模呈线性对数增长;O(n^2)表示算法的执行时间随输入规模呈平方增长;O(n^3)表示算法的执行时间随输入规模呈立方增长。
1.4 空间复杂度的计算方法空间复杂度可以通过估计算法执行过程中所需要的额外存储空间来计算。
对于递归算法,通常使用递归的深度来估算空间复杂度。
1.5 算法复杂度的应用算法的复杂度分析在实际应用中非常重要,可以帮助我们选择合适的算法来解决问题。
在时间复杂度相同的情况下,可以通过比较空间复杂度来选择更优的算法。
在实际开发中,我们也可以根据算法的复杂度来进行性能优化,减少资源的消耗。
二、搜索算法2.1 线性搜索算法线性搜索算法是一种简单直观的搜索算法,逐个比较待搜索元素和数组中的元素,直到找到匹配的元素或遍历完整个数组。
其时间复杂度为O(n),空间复杂度为O(1)。
2.2 二分搜索算法二分搜索算法是一种高效的搜索算法,前提是数组必须是有序的。
算法首先取数组的中间元素进行比较,如果相等则返回找到的位置,如果大于中间元素则在右半部分继续搜索,如果小于中间元素则在左半部分继续搜索。
《数据结构与算法》课后习题答案
p 为指向该链表中某一
【提示】 利用循环单链表的特点,通过 然后可删除结点 * p。
s 指针可循环找到其前驱结点
p 及 p 的前驱结点 q,
viod delepre(LNode *s)
{LNode * p, *q;
p=s;
while (p->next!=s)
{q=p;
p=p->next;
}
q->next=s;
/*n 表示要删除元素的个数 */
for(j=k;j<=A->last;j++)
A->data[j-n]=A->data[j];
/* 删除多余元素 */
A->last= A->last -n;
i++;
}
}
3.写一个算法,从一个给定的顺序表 以较高的效率来实现。
A 中删除值在 x~y(x<=y) 之间的所有元素,要求
LinkList insert(LinkList L, int x)
{p=L;
while(p->next && x>p->next->data)
p=p->next;
/* 寻找插入位置 */
s=(LNode *)malloc(sizeof(LNode));
/* 申请结点空间 */
s->data=x;
/* 填装结点 */
if(low<high)
{k=R[low];
R[low]=R[high];
R[high]=k;
}
}
}
5.线性表用顺序存储,设计一个算法,用尽可能少的辅助存储空间将顺序表中前 元素和后 n 个元素进行整体互换。即将线性表:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浙江大学远程教育学院《数据结构与算法》课程离线作业一、填空题:(【序号,章,节】。
)【1,1,2】线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
【2,1,2】为了最快地存取数据元素,物理结构宜采用序存储结构。
3,1,2】数据结构的三要素是逻辑结构,物理结构,操作。
【3,1,2】存储结构可根据数据元素在机器中的位置是否一定连续分为顺序存储结构,链式存储结构。
【4,1,3】度量算法效率可通过时间复杂度和空间复杂度__来进行。
【5,1,3】设n 为正整数,下面程序段中前置以记号@的语句的频度是n(n+1)/2。
for (i=0; i<n; i++){for (j=0; j<n; j++)if (i+j==n-1)@ a[i][j]=0;}【6,1,3】设n 为正整数,试确定下列各程序段中前置以记号@的语句的频度:(1) i=1; k=0;while (i<=n-1){i++;@ k+=10 * i; // 语句的频度是_____ n-1_______________。
}(2) k=0;for (i=1; i<=n; i++){for (j=i; j<=n; j++)1 / 50@ k++; // 语句的频度是_____ n(n+1)/2________________。
}【7,3,2】线性表(a1,a2,…,a n)有两种存储结构:顺序存储结构和链式存储结构,请就这两种存储结构完成下列填充:_顺序存储结构__ 存储密度较大;_顺序存储结构___存储利用率较高;_顺序存储结构___可以随机存取;_链式存储结构____不可以随机存取;__链式存储结构__插入和删除操作比较方便。
【8,3,2】从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动n-i个元素。
【9,3,2】带头结点的单链表Head为空的条件是____ Head->next==null_____【10,3,2】在一个单链表中p所指结点(p所指不是最后结点)之后插入一个由指针s所指结点,应执行s->next=__ p->next___;和p->next=___s _____的操作。
【11,3,2】在一个单链表中删除p所指结点时,应执行以下操作:q= p->next;p->data= p->next->data;p->next= p->next->next_ ;free(q);【12,3,2】带头结点的单循环链表Head的判空条件是_ Head->next==null ____;不带头结点的单循环链表的判空条件是__ Head==null___。
【13,3,2】已知L是带表头结点的非空单链表, 且P结点既然不首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。
a. 删除P结点的直接前驱结点的语句序列是_10 12 8 11 4 14______。
b. 删除结点P的语句序列是_____10 12 7 3 14___________。
c. 删除尾元结点的语句序列是______9 11 3 14___________。
(1) P = P->next;(2) P->next = P;2 / 50(3) P->next = P->next ->next;(4) P = P->next ->next;(5) while (P != NULL) P = P->next;(6) while (Q->next != NULL){P = Q; Q = Q->next};(7) while (P->next != Q) P = P->next;(8) while (P->next->next != Q) P = P->next;(9) while (P->next->next != NULL) P = P->next;(10) Q = P;(11) Q = P->next;(12) P = L;(13) L = L->next;(14) free (Q);【14,3,3】对一个栈,给定输入的顺序是A、B、C,则全部不可能的输出序列有C A B。
【15,3,3】.在栈顶指针为HS的链栈中,判定栈空的条件是head->next==null。
【16,3,3】下列程序把十进制数转换为十六进制数,请填写合适的语句成分。
void conversion10_16(){ InitStack(&s);scanf(“%d”,&N);while(N){____ Push(s, N%16) _____ ___ ;N = N/16;}while(!StackEmpty(s)){_______ Pop(s, e);if(e<=9)printf(“%d”,e);else printf(“%c”,e-10+’A’);}} /* conversion */【17,3,4】若用一个大小为6个元素的数组来实现循环队列,且当前rear=0和front=3。
当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是 2 和4 。
【18,3,4】堆栈和队列都是线性表, 堆栈是___后进先出__的线性表, 而队列是________3 / 50先进先出___的线性表。
【19,3,4】若用一个大小为6个元素的数组来实现循环队列,且当前rear=0和front=3。
当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是2 和 4 。
【20,4,2】已知一棵树边的集合是{<a,d>,<d,c>,<d,j>,<e,a>,<f,g>,<d,b>,<g,h>,<g,i>,<e,f>}。
那么根结点是e,结点b的双亲是d,结点a的子孙有bcdj ,树的深度是4,树的度是3,结点g在树的第3层。
【21,4,3】从概念上讲,树与二叉树是二种不同的数据结构,将树转化为二叉树的基本的目的是树可采用二叉树的存储结构并利用二叉树的已有算法解决树的有关问题【22,4,3】满三叉树的第i层的结点个数为3i-1,深度为h时该树中共有3h-1结点。
【23,4,3】已知一棵完全二叉树有56个叶子结点,从上到下、从左到右对它的结点进行编号,根结点为1号。
则该完全二叉树总共结点有___111_____个;有__7_____层;第91号结点的双亲结点是___45____号;第63号结点的左孩子结点是_________号。
【24,4,3】下列表示的图中,共有____5___个是树;有___3____个是二叉树;有___2____个是完全二叉树。
4 / 505 /50【25,4,4】n 个结点的二叉排序树的最大深度是 n ,最小深度为 [log2ⁿ]+1 _【26,4,3】如果某二叉树的后序遍历序列是ABCDEFGHI ,中序遍历序列是ACBIDFEHG ,则其先序遍历序列的第一个字母是 I ,最后一个字母是 G。
【27,4,3】下列二叉树的中序遍历序列是____ DBNGOAEC ____ ___;后序遍历序列是________ DNOGBECA ___。
6 /50【28,5,4】设HASH 表的大小为 n (n=10), HASH 函数为 h(x)=x % 7, 如果二次探测再散列方法Hi=(H(key)+di) mod 10 (di = 12,22,32,…,)解决冲突,在HASH 表中依次插入关键字{1,14,55,20,84,27}以后,关键字1、20和27所在地址的下标分别是 、 ______ 和 。
插入上述6个元素的平均比较次数是 。
答案:1、7、5、2【29,6,3】设无权图G 的邻接矩阵为A ,若(vi,vj )属于图G 的边集合,则对应元素A[i][j]等于 1 ,22、设无向图G 的邻接矩阵为A ,若A[i][j]等于0,则A[j][i]等于 0 。
【30,6,3】若一个图用邻接矩阵表示,则删除从第i 个顶点出发的所有边的方法是 矩阵第i 行全部置为零 。
【31,6,2】设一个图G={V ,{A}},V={a,b,c,d,e,f},A={<a,b>,<b,e>,<a,e>,<c,a>,<e,d>,<d,f>,<f,c>}。
那么顶点e 的入度是 2 ;出度是 1 ;通过顶点f 的简单回路有 2 条;就连通性而言,该图是 强连通图 图;它的强连通分量有 1 个;其生成树可能的最大深度是 5 。
【32,7,1】排序过程一般需经过两个基本操作,它们是 比较 和 移动 。
【33,7,2】在对一组关键字是(54,38,96,45,15,72,60,23,83)的记录进行直接插入排序时,当把第七个记录(关键字是60)插入到有序表时,为寻找插入位置需比较 3 次分别与54、72、96比较【34,7,4】插入排序、希尔排序、选择排序、快速排序、堆排序、归并排序、和基数排序方法中,不稳定的排序方法有选择排序、快速排序、堆排序、希尔排序7 / 508 / 50二、综合题(选自教材《数据结构》各章习题,采用word 文件格式上传)【1,1,3】试分析下面一段代码的时间复杂度:if ( A > B ) {for ( i=0; i<N; i++ )for ( j=N*N; j>i; j-- )A += B;}else {for ( i=0; i<N*2; i++ )for ( j=N*2; j>i; j-- )A += B;}if 中的时间复杂度为:O(n*n ²)即O(n ³)else 中的时间复杂度为:O(n*n)即O(n ²)【2,1,3】测试例1.3中秦九韶算法与直接法的效率差别。
令i x x f i i /1)(1001∑=+=,计算)1.1(f 的值。
利用clock()函数得到两种算法在同一机器上的运行时间。
答:从运行结果可以看出秦九昭算法效率上有很大优势;#include <stdio.h>#include <time.h>#include <math.h>clock_t start,stop;double duration;#define MAXN 10#define MAXK 1e7double f1(int n ,double a[],double x);double f2(int n ,double a[],double x);//秦九昭算法double f1(int n ,double a[],double x){int i =0 ;double p = a[0];for(i=n;i>0;i--)p = a[i-1] + x * p;return p;}//直接算法double f2(int n ,double a[],double x){int i =0 ;double p = a[0];for(i=n;i>0;i--)p += a[i]*pow(x,i);return p;}int main(){int i ;double a[MAXN] ;for(i=0;i<MAXN;i++)a[i]=(double)i;start = clock();for(i=0;i<MAXK;i++)f2(MAXN-1,a,1.1);stop = clock();duration = ((double)(stop-start))/CLK_TCK/MAXK ;printf("直接算法:");printf("ticks = %f\n",(double)(stop-start));9 / 5010 / 50printf("duration = %6.2e\n",duration);for (i=0;i<MAXN;i++)a[i]=(double )i;start = clock();for (i=0;i<MAXK;i++)f1(MAXN-1,a,1.1);stop = clock();printf("秦九昭算法:");printf("ticks = %f\n",(double )(stop-start));printf("duration = %6.2e\n",duration);return 0;} 【3,1,3】 试分析最大子列和算法1.3的空间复杂度。