《数据结构》(专科)已完成
- 格式:docx
- 大小:452.47 KB
- 文档页数:12
华东理工大学网络学院(专科)《数据结构》------ch7图、ch9排序班级学号姓名成绩一、填空题(每空1分,共10分)1.具有n个顶点的有向图最多有n(n-1)条边。
2.在无向图G的邻接矩阵中,求第i个结点的度的方法是求邻接矩阵第i行非零元素之和。
3.堆排序通常采用顺序存储结构。
4. 与快速排序和堆排序相比,归并排序的最大特点是,它是一种稳定的排序方法。
5.具有8个顶点的有向完全图有56 条弧。
6. 在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于 1 。
7.在一个待排序的序列中,只有很少量元素不在自己最终的正确位置上,但离他们的正确位置都不远,则使用直接插入排序方法最好。
8. 已知有向图的邻接矩阵,要计算i号顶点的入度,计算方法是:将i列元素累加。
9. n个顶点的强连通图至少有n 条边,至多有n(n-1) 条边。
二、判断正误(对的用”T”表示,错误的用”F”表示。
每小题1分,共10分)1. ( T )若一个有向图的邻接矩阵中对角线以下元素均为零,则该图的拓扑有序序列必定存在。
2. ( F )快速排序的速度在所有的排序方法中为最快,而且所需附加空间也最少。
3.( F )采用邻接表存储的图的深度优先遍历算法类似二叉树的按层次遍历算法。
4.(T )在待排序的元素序列基本有序的前提下,效率最高的是插入排序。
5.(T )图的广度优先遍历类似于树的层次遍历。
6.(T )拓扑排序时,总是在有向图中选择入度为0的顶点输出。
7.( F )若要求一个稠密图G的最小生成树,最好用Kruscal算法来求解。
8.(T )拓扑排序输出的顶点数小于有向图的顶点数,则该图一定存在回路。
9.(T )设有一稠密图G,则G采用邻接矩阵存储较省空间。
10.(F)n个顶点e条边的图采用邻接矩阵存储,深度优先遍历算法的时间复杂度为O(n+e)。
三、单项选择题(每小题2分,共20分)1.已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是 C 。
《数据结构》课程简介《数据结构》技术是近年来各高校兴办的新专业,是交叉型、复合型的专业。
“数据结构”课程是计算机程序设计的重要理论基础,它是计算机、《数据结构》技术等相关专业重要的专业基础课程与核心课程,同时也是其他理工专业的热门选修课。
本《数据结构》是为“数据结构”课程编写的教材,其内容选取符合教学大纲要求,并兼顾不同学科的广度和深度,适用面广。
本《数据结构》在编写中结合了编著者多年讲授这门课程的教学经验,合理地组织教材内容,做到内容紧凑、叙述深入浅出、图文并茂,并提供了大量的案例介绍。
全《数据结构》共8章:第1章绪论,以非数值计算的程序设计解决实际问题为例,说明什么是数据结构,数据结构的研究内容及相关概念,讨论了如何描述算法及对应的性能分析;第2~4章,主要讨论线性结构。
如线性表、栈、队列、串、数组等,研究了各自的逻辑结构、存储结构及相关的数据操作;第5~6章讨论非线性结构,包括树、二叉树和图以及它们的应用;第7、8章讨论程序设计中常见的查找和排序问题,并就典型方法进行了详尽的算法分析和描述,不仅介绍了各种算法的实现,而且着重从时间上进行了定性或定量的分析和比较。
本《数据结构》内容阐述详尽,文字通俗,简明易懂,算法分析循序渐进富有逻辑性,算法描述清晰准确,理论知识剖析清楚,且注重对难点的阐述,易于学生理解和自学。
《数据结构》中的算法均采用C语言实现,可直接在任何C环境下调试运行。
每章后均配有相应的习题并提供参考答案,方便学生自主学习;同时,本《数据结构》免费提供以教材为基本内容并符合课堂讲授方式的电子课件,这也是编著者在教学中一直使用的教学课件。
通过教材的学习,希望达到理解数据结构理论并能运用常用算法解决实际问题的目的。
本《数据结构》可作为高等院校相关课程的本科或专科教材,是适合应用型人才培养的教材,也可作为科技工作者的参考《数据结构》,讲授48~80学时。
教师根据学时、专业和学生的实际情况,选讲或不讲教材中的某些章节,如第4章的多维数组部分。
《数据结构》课程标准学时:72学时(其中:讲课学时:36 上机学时:36 )先修课程:高等数学、C语言程序设计后续课程:软件开发相关的应用性课程(Android应用开发、软件工程等)适用专业:软件技术、移动应用开发、软件与信息服务等开课部门:信息工程与大数据学院一、课程的性质《数据结构》是面向软件技术相关专业的一门专业基础课,课程要求:熟练掌握线性表、栈和队的存储结构及基本操作,并能在相应的应用中正确地选用,培养学生用链式结构编写程序的能力;了解串和广义表的定义和存储结构;掌握数组的存储结构,熟悉稀疏矩阵的两种压缩存储方法的特点及适用范围;了解树的存储结构及特点,掌握二叉树和图的存储结构及其相应算法,培养学生用非线性结构解决实际问题的能力;掌握各种查找、排序方法,培养学生灵活应用已有排序方法的能力,开拓思路编写新的排序算法。
二、课程设计理念数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
精心选择的数据结构可以带来更高的运行或存储效率,数据结构往往同高兴的检索算法和索引技术有关。
1、课程地位理念在许多类型的程序设计中,数据结构的选择是一个基本的设计考虑因素。
许多大型的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。
许多时候,确定了数据结构后,算法就容易得到了。
有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。
不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法随之确定,是数据而不是算法是系统构造的关键因素。
2、课程学情理念本课程开设在嵌入式系统工程专科第一学期,学生在学习本课程前已具备计算机基础、C语言基础等知识,本课程力图让学生学会在C语言环境下,运用面向对象的思想编写规范的代码,实现经典的数据结构和算法。
熟悉常用的数据结构和算法,使学生初步具备一个优秀的软件开发人员所应有的基本能力。
华东理工大学网络学院(专科)《数据结构》------第3章、第4章、第5章班级学号姓名成绩一、填空题(每空1分,共20分)1. 栈和队列是两种特殊的线性表,栈的特点是先进后出,表达式求值,栈的典型应用有和实现递归过程。
2. 在具有n个单元的循环队列中,队列满时共有n-1 个元素。
3. 若串的长度不能确定,可采用动态存储结构,为串值分配一个存储空间,同时建立一个串的描述子以指示串值的长度和串在存储空间中的位置,称该结构为堆/堆结构。
4. 稀疏矩阵一种常用的压缩存储方法称为三元组表方式,即每个三元组表中的元素由、行、列、值、三部分组成。
5. 二维数组A[10][20]采用列序为主方式存储,每个元素占10个存储单元,且A[0][0]的存储地址是2000,则A[6][12]的地址是3260 。
6.进栈序列为a,b,c,则通过出栈和进栈操作可能得到的a,b,c的不同的排列序列有5 种。
7. 广义表((a,b),c,d)的表头是(a, b) ,表尾是(c,d) 。
8.已知二维数组A[20][10]采用行序为主方式存储,每个元素占2个存储单元,并且A[10][5]的存储地址是1000,则A[18][9]的存储地址是1168 。
9. 广义表((((a),b),c),d)的表头是(((a),b),c) ,表尾是(d) 。
10. 设s=’YOU ARE JUDGING IT RIGHT OR WRONG’,顺序执行下列操作:SubString(sub1,s,1,8);SubString(sub2,s,20,5);StrCat(sub1,sub2); 则最后sub1的值为:’YOU ARE RIGHT’。
11. 假设用循环单链表实现队列,若队列非空,且队尾指针为R, 则将新结点S加入队列时,需执行下面语句:S->next=R->next ;R->next=S ;R=S 。
12.设有两个串p和q,求q在p中首次出现的位置的运算称作子串定位。
专升本《数据结构》数据结构是计算机科学中的一门基础课程,它主要涉及数据的组织、存储和操作等内容。
在计算机科学与技术领域中,数据结构被广泛应用于算法设计与分析、系统设计与优化、数据库管理等诸多领域。
对于想要进一步提升自己的专业素养和扩展自己的职业发展空间的人来说,学习数据结构是十分重要的。
首先,学习数据结构能够提高算法设计与分析的能力。
数据结构是算法的基础,正确选择合适的数据结构能够在很大程度上提高算法的效率和性能。
学习数据结构可以使我们了解各种数据结构的特点、适用范围和实现方式,从而在解决实际问题时能够将算法与数据结构相结合,设计出更加高效的解决方案。
其次,学习数据结构能够提高系统设计与优化的能力。
在软件开发过程中,经常需要处理不同类型和规模的数据结构,如树、图、队列、栈等。
熟练掌握和运用这些数据结构,能够使程序更加健壮、高效且易于维护。
此外,学习数据结构还能够提高我们对系统性能和资源利用的认识,能够针对不同的应用场景选择合适的数据结构,从而提高系统的吞吐量和响应速度。
再次,学习数据结构能够提高数据库管理的能力。
现代数据库管理系统通常使用各种数据结构来存储和管理大量的数据,如B树、哈希表等。
学习数据结构能够使我们更好地理解数据库管理系统的原理和实现方式,能够设计出更加高效的数据库结构和查询算法,从而提高数据库的性能和可用性。
此外,学习数据结构还能够提高我们对数据一致性和完整性的认识,能够更好地保证数据的安全性和可靠性。
最后,学习数据结构还能够提高编程能力和解决问题的能力。
数据结构是程序设计的基础,不仅能够教会我们如何设计和实现高效的数据结构,还能够培养我们分析和解决复杂问题的能力。
通过学习数据结构,我们可以学会如何对问题进行抽象和建模,如何选择和应用合适的数据结构和算法,如何优化程序的性能和可读性。
这些能力对于提高编程效率和质量,解决实际问题非常有帮助。
总之,学习数据结构对于提升专业素养和扩展职业发展空间非常重要。
数据结构(C语言版)第三版__清华大学出版社_习题参考答案数据结构(C语言版)第三版__清华大学出版社_习题参考答案引言:数据结构是计算机科学的基础,对于学习和理解数据结构的相关概念和算法非常重要。
本文将对清华大学出版社出版的《数据结构(C语言版)第三版》中的习题进行参考答案的提供。
通过正确的理解和掌握这些习题的解答,读者可以加深对数据结构的认识,并提高自己的编程能力。
第一章:绪论1.1 数据结构的定义与作用数据结构是指数据对象以及数据对象之间的关系、运算和存储结构的总称。
数据结构的作用是在计算机中高效地组织和存储数据,同时支持常见的数据操作和算法。
1.2 算法的定义与特性算法是解决特定问题的一系列步骤和规则。
算法具有确定性、有穷性、可行性和输入输出性等特点。
第二章:线性表2.1 线性表的定义和基本操作线性表是同类型数据元素的一个有限序列。
线性表的基本操作包括初始化、查找、插入、删除和遍历等。
2.2 顺序存储结构顺序存储结构是将线性表中的元素按顺序存放在一块连续的存储空间中。
顺序存储结构的特点是随机存取、插入和删除操作需要移动大量元素。
2.3 链式存储结构链式存储结构通过结点之间的指针链表来表示线性表。
链式存储结构的特点是插入和删除操作方便,但查找操作需要遍历整个链表。
第三章:栈和队列3.1 栈的定义和基本操作栈是只能在一端进行插入和删除操作的线性表。
栈的基本操作包括初始化、入栈、出栈和获取栈顶元素等。
3.2 队列的定义和基本操作队列是只能在一端插入操作,在另一端进行删除操作的线性表。
队列的基本操作包括初始化、入队、出队和获取队头元素等。
第四章:串4.1 串的定义和基本操作串是由零个或多个字符组成的有限序列。
串的基本操作包括初始化、串的赋值、串的连接和串的比较等。
第五章:树5.1 树的基本概念和术语树是n(n>=0)个结点的有限集。
树的基本概念包括根结点、子树、深度和高度等。
5.2 二叉树二叉树是每个结点最多有两个子树的树结构。
《数据结构》课程标准(专科)一、课程的性质:《数据结构》是计算机专业的一门必修专业基础课,它是一门理论性强,但有一定的实践性和较强实用性的基础课程。
二、课程的教学目的与任务:本课程的任务是讨论数据的各种逻辑结构、存储结构以及有关操作的算法。
目的是使学生掌握分析研究计算机加工的数据对象的特性,以便对所要处理的数据对象选择合适的数据结构和存储结构,并在此基础上掌握对这些数据的操作(查找、插入、删除和修改等)。
同时培养学生运用C 语言编写结构清晰、正确易读的算法,并具备初步评价算法的能力,为学生今后继续学习和研究打下坚实的基础。
三、课程的教学手段和方法:本课程理论讲授采用教材与多媒体相配合的教学手段。
本课程包括课堂教学与实践教学两大部份。
课堂教学在方法上,采用课堂讲授、课后自学、课堂讨论、平时测验等教学形式。
实践教学部份主要是实验。
四、课程内容及学时分配(共 72 学时,其中讲课 60 学时,实验 12 学时):一、基本要求:掌握数据结构的一些基本概念,了解抽象数据类型的定义和使用。
二、教学重点及难点:本节重点是了解数据结构的逻辑结构、存储结构及数据的运算三方面的概念及相互关系。
教学难点是什么是数据的逻辑结构及物理结构?三、讲授内容:(一)数据结构的一些基本概念:数据、数据元素、数据逻辑结构、数据存储结构、数据类型、算法等。
(二)抽象数据类型。
四、思量题:举出一个数据结构的例子,叙述其逻辑结构、存储结构、结构上的操作内容。
一、基本要求:掌握算法的时间复杂度和空间复杂度的分析方法,了解算法的描述方法。
二、教学重点及难点:本节重点是算法的各种描述方法和算法分析(时间复杂度及空间复杂度)。
教学难点是对一个算法时间复杂度的分析。
三、讲授内容:(一)描述算法所用的 C 语言中的一些有关问题。
(二)算法时间复杂度和空间复杂度的分析。
四、思量题:编写算法,求一元多项式 P (x)=a +a x+a x2+a x3+…a x n 的值 P (x ),要求时间复杂度尽可能小。
电子科技大学网络教育-数据结构(专科)试题及答案(1)一、单选,共30题/每题2.5分/共75.0分:1、计算机算法必须五个特性,即输入、输出和()。
A、确定性、有穷性和稳定性B、可行性、可移植性和可扩充性C、可行性、确定性和有穷性D、易读性、稳定性和安全性得分:2.52、关于冒泡排序的说法正确的有()①.属于交换排序②.在整个排序过程中,最多执行n-1遍③.属于选择排序④.在某一趟排序过程没有气泡交换,则可终止该算法A、①②B、②③④C、①②④D、②③得分:2.53、下面程序段的时间复杂度是()。
for(i=0;i<m;i++)for(j=0;j<n;j++)a[i][j]=i*j;A、O(m+n)B、O(n2)C、O(m*n)D、O(m2)得分:2.54、设n、m为一棵二叉树上的两个结点,在中根遍历时,n在m之前的条件是()。
A、n是m的祖先B、n是m的子孙C、n在m左方D、n在m右方得分:2.55、假定一个链栈的栈顶指针用其所长top表示,当p所指向的节点进栈时,执行的操作是()。
A、top=p->p;p->next=top;B、p->next=top->next;top->next =p;C、p->next=top;top=top->next;D、p->next=top;top=p;得分:2.56、在决定选取何种存储结构时,一般不考虑()。
A、所使用编辑语言实现这种的便利性B、结点个数C、对数据的运算D、各结构的值得分:2.57、若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为()。
A、X的双亲B、X的左子树中最右叶结点C、X的左子树中最右结点D、X的右子树中最左的结点得分:2.58、设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是()。
数据结构,专科一、简答题(1、假设一个有向图的顶点集合V={c1,c2,c3,c4,c5},弧集S={<c1,c2>,<c1,c3>,<c2,c5>,<c3,c2>,<c3,c4>,<c5,c4>},(1)试根据上述关系,画出该有向图;(2)该图有环吗?若无环,则写出它的一个拓扑有序序列;若有环,请写出组成环的顶点序列。
答:2、已知某二叉树的先序序列为{ ABHFDECKG },中序序列为{ HBDFAEKCG }, 画出该二叉树。
答:二叉树是a/ \b e/ \ \h f c/ / \d k g后序是hdfbkgcea3、已知关键字序列{70,83,100,65,10,9,7,32},现对其从小到大排序,写出快速排序每一趟结束时的关键字状态。
答#include<stdio.h>int main(){int i,j,t;int a[7]={70,83,100,65,10,32,7,9};for(j=0;j<6;j++)//进行6次循环for(i=0;i<6-j;i++)// 每次实现6-j次循环if(a[i]>a[i+]){ t=a[i];a[i]=a[i+1];a[i+1]=t;}//每次a[i]与a[i+1]比较,大的就调换两者位置for(i=0;i<7;i++)printf("%d ",a[i]);}譬如第一次结果就是70,83,100,65,10,32,7,970比83小,所以位置没变。
4、设s="I AM A WORKER",t=" GOOD",q=" WORKER"。
求:StrLength(s),StrLength(t) ,SubString(s,8,6) ,Index(s,q,1) 。
答:strlength(s)=14;strlength(t)=4;substr(s,8,6)=worker;substr(s,q,1)=o;5、在单链表中设置头结点有什么作用?答:头结点就是在单链表的开始结点之前附加的一个结点,设置头结点的优点有两个:(1)由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作就和在表的其他位置上一样,无须进行其他特殊处理;(2)无论链表是否为空,其头指针是指向头结点的非空指针(空表中头结点的指针域空),因此空表和非空表的处理也就一样了。
第1章绪论(一)选择题。
1、【B 】不是要关注程序的时间复杂性的原因。
A、确定程序运行时间的上限B、判断一个计算机系统是否有足够的内存来运行该程序C、正在开发的程序可能需要提供一个满意的实时响应D、在多种可选的方案中决定采用哪一个(二)判断对错。
1、数据的存储结构也称为物理结构,指数据的逻辑结构在计算机中的映象,它包括数据元素的映象和数据元素关系的映象。
√2、数据的逻辑结构是指数据的各数据项之间的逻辑关系。
√3、数据的逻辑结构说明数据元素之间的次序关系,它依赖于数据的存储结构。
×4、算法的优劣与描述算法的语言无关,但与所用计算机的性能有关。
×5、算法必须有输出,但可以没有输入。
√(三)填空题。
1、数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
通常从【逻辑结构】、【存储结构】、【在结构上实施的运算】三方面描述一种数据结构。
2、数据结构可以分为三大类,它们是【线性表】、树和图。
3、数据结构可以分为两大类,它们是【线性结构】和非线性结构。
4、下面算法的渐近时间复杂度是【O(n2) 】。
for(i=1; i<n; i++)for(k=1; k<n; k++)w=w+10*i+j+k;5、下面算法的渐近时间复杂度是【O(n) 】。
k=0;for(i=1; i<n; i++)for(j=1; j<n; j++)k=k+10*i+j;第2章线性表(一)选择题。
1、若线性表的最常用的操作是存取第i个元素及其前趋元素的值,则采用【D 】存储方式最省时间。
A、单链表B、双链表C、单循环链表D、顺序表2、线性表采用链式存储时,其地址【D 】。
A、必须是连续的B、部分地址必须是连续的C、一定是不连续的D、连续与否均可以3、单链表的存储密度【C 】。
A、大于1 B、等于1 C、小于1 D、不能确定4、设顺序表表长为n ,并在任意位置上插入或删除操作都是等概率的。
删除一个元素时平均要移动表中【 B 】个元素。
专科《数据结构》一、 (共75题,共150分)1。
数据的逻辑结构在计算机内部存储表示称为为数据的()。
(2分)A.数据结构 B。
逻辑关系C。
物理结构 D.数据元素的内部结构.标准答案:C2。
()是数据的不可分割的最小单位。
(2分)A.数据对象 B。
数据元素 C。
数据类型 D。
数据项。
标准答案:D3。
算法的时间复杂度是对算法()的度量。
(2分)A。
时间效率 B。
空间效率 C。
可读性 D.健壮性.标准答案:A4。
()是限制了插入和删除操作在一端进行的线性表。
(2分)A.栈 B。
队列 C。
串 D.数组。
标准答案:A5. 数组通常采用顺序存储的优点是()。
(2分)A.便于增加存储空间 B。
便于依据下标进行随机存取C。
避免数据元素的移动 D.防止下标溢出。
标准答案:B6. 采用带头结点双向链表存储的线性表,在插入一个元素时,需要修改指针()次。
(2分)A.1B.2 C。
3 D。
4.标准答案:D7。
线性表的顺序存储结构是一种()的存储结构. (2分)A。
顺序存取 B.随机存取 C.索引存取 D。
Hash存取。
标准答案:B8. 数组a[1。
256]采用顺序存储,a的首地址为10,每个元素占2字节,则a [21]的地址是()。
(2分)A。
10 B。
30 C。
50 D。
70.标准答案:C9。
深度为4的二叉树,第4层至少有()个结点。
(2分)A。
0 B。
1 C。
8 D。
15。
标准答案:B10. 若二叉树对应的二叉链表共有11个非空链域,则该二叉树有()个结点的二叉树. (2分)A。
10 B。
11 C。
20 D。
21.标准答案:A11。
下面叙述错误的是(). (2分)A.借助于队列可以实现对二叉树的层遍历B.栈的特点是先进后出C。
对于单链表进行插入操作过程中不会发生上溢现象D.在无向图的邻接矩阵中每行1的个数等于对应的顶点度。
标准答案:C12. 以下与数据的存储结构无关的术语是(). (2分)A.循环队列B.双向链表 C。
数据结构基础及深入及考试复习资料习题及实验参考答案见附录结论1、数据的逻辑结构是指数据元素之间的逻辑关系。
即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。
它依赖于计算机。
存储结构可分为4大类:顺序、链式、索引、散列3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。
它由基本的数据类型构成,并包括一组相关的服务(或称操作)。
它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。
4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
5、在数据结构中,从逻辑上可以把数据结构分成( C )A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6、算法的时间复杂度取决于( A )A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态线性表1、线性表的存储结构包括顺序存储结构和链式存储结构两种。
2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为( E ),删除一个元素需要移动的元素的个数为( A )。
A、(n-1)/2B、nC、n+1D、n-1E、n/2F、(n+1)/2G、(n-2)/23、“线性表的逻辑顺序与存储顺序总是一致的。
”这个结论是( B )A、正确的B、错误的C、不一定,与具体的结构有关4、线性表采用链式存储结构时,要求内存中可用存储单元的地址( D )A、必须是连续的B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以5、带头结点的单链表为空的判定条件是( B )A、head==NULLB、head->next==NULLC、head->next=headD、head!=NULL6、不带头结点的单链表head为空的判定条件是( A )A、head==NULLB、head->next==NULLC、head->next=headD、head!=NULL7、非空的循环单链表head的尾结点P满足( C )A、p->next==NULLB、p==NULLC、p->next==headD、p==head8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B )A、O(1)B、O(n)C、O(n2)D、O(nlog2n)9、在一个单链表中,若删除p所指结点的后继结点,则执行( A )A、p->next=p->next->next;B、p=p->next;p->next=p->next->next;C、p->next=p->next;D、p= p->next->next;10、在一个单链表中,若在p所指结点之后插入s所指结点,则执行( B )A、s->next=p;p->next=s;B、s->next=p->next;p->next=s;C、s->next=p->next;p=s;D、p->next=s;s->next=p;11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点s,则执行(C )A、s->next=p->next;p->next=s;B、p->next=s->next;s->next=p;C、q->next=s;s->next=p;D、p->next=s;s->next=q;12、在线性结构中,第一个结点没有前趋结点,其余每个结点有且只有 1 个前趋结点。
数据结构专科辅导六------图的辅导练习题及解答(一)单项选择题1. 在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的入度数之和为( )。
A sB s-1C s+1D n2. 在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的度数之和为( )。
A sB s-1C s+1D 2s3. 在一个具有n个顶点的无向图中,若具有e条边,则所有顶点的度数之和为( )。
A nB eC n+eD 2e4. 在一个具有n个顶点的无向完全图中,则所含的边数为( )。
A nB n(n-1)C n(n-1)/2D n(n+1)/25. 在一个具有n个顶点的有向完全图中,则所含的边数为( )。
A nB n(n-1)C n(n-1)/2D n(n+1)/26. 在一个无权图中,若两顶点之间的路径长度为k,则该路径上的顶点数为( )。
A kB k+1C k+2D 2k7. 对于一个具有n个顶点的无向连通图,它包含的连通分量的个数为( )。
A 0B 1C nD n+18. 若一个图中包含有k个连通分量,若要按照深度优先搜索的方法访问所有顶点,则必须调用( )次深度优先搜索遍历的算法。
A kB 1C k-1D k+19. 若要把n个顶点连接为一个连通图,则至少需要( )条边。
A nB n+1C n-1D 2n10. 在一个具有n个顶点和e条边的无向图的邻接矩阵中,表示边存在的元素(又称为有效元素)的个数为( )。
A nB n⨯eC eD 2⨯e11. 在一个具有n个顶点和e条边的有向图的邻接矩阵中,表示边存在的元素个数为( )。
A nB n⨯eC eD 2⨯e12. 在一个具有n个顶点和e条边的无向图的邻接表中,边结点的个数为( )。
A nB n⨯eC eD 2⨯e13. 在一个具有n个顶点和e条边的有向图的邻接表中,保存顶点单链表的表头指针向量的大小至少为( )。
A nB 2nC eD 2e14. 在一个无权图的邻接表表示中,每个边结点至少包含( )域。
数据结构考试题库专科# 数据结构考试题库专科一、选择题1. 在数据结构中,线性表是:- A. 有序的- B. 无序的- C. 可以是有序的也可以是无序的- D. 以上都不是2. 栈(Stack)是一种特殊的线性表,其特点是:- A. 只能在表头进行插入和删除操作- B. 只能在表尾进行插入和删除操作- C. 同时在表头和表尾进行插入和删除操作- D. 只能在表中任意位置进行插入和删除操作3. 队列(Queue)的特点是:- A. 只能在表头进行插入操作,在表尾进行删除操作 - B. 只能在表尾进行插入操作,在表头进行删除操作 - C. 同时在表头和表尾进行插入和删除操作- D. 只能在表中任意位置进行插入和删除操作4. 链表相比于数组的优点是:- A. 访问速度快- B. 插入和删除操作不需要移动元素- C. 内存占用少- D. 以上都是5. 二叉树的遍历方式不包括:- A. 前序遍历- B. 中序遍历- C. 后序遍历- D. 随机遍历二、填空题1. 在数据结构中,______ 是最基本的数据结构,它由一组数据元素和定义在这些元素上的一组操作组成。
2. 栈的两个基本操作是______ 和 ______。
3. 队列的两个基本操作是______ 和 ______。
4. 链表是由一系列______ 结点组成的。
5. 树的度是指树中一个节点最多拥有的______ 数量。
三、简答题1. 简述线性表的逻辑结构特点。
2. 描述栈的后进先出(LIFO)特性,并举例说明其应用场景。
3. 说明队列的先进先出(FIFO)特性,并举例说明其应用场景。
4. 什么是二叉搜索树?其主要特点是什么?5. 什么是图?图的表示方法有哪些?四、应用题1. 给定一个数组,请编写一个算法,实现对该数组的排序,并说明所使用的排序算法的时间复杂度。
2. 描述如何使用链表实现一个简单的队列,并说明其优缺点。
3. 给定一棵二叉树,请编写一个算法实现其前序遍历,并画出相应的遍历过程。
专升本《数据结构》在当今数字化的时代,数据结构成为了计算机科学领域中至关重要的一部分。
对于准备专升本考试的同学们来说,深入理解和掌握数据结构的知识,是提升自身专业素养、为未来学习和工作打下坚实基础的关键。
那么,究竟什么是数据结构呢?简单来说,数据结构就是研究数据的组织、存储和管理方式,以及如何对这些数据进行高效的操作和处理。
它就像是一个工具箱,里面装满了各种不同的工具,帮助我们更好地处理和利用数据。
在数据结构的世界里,有许多常见的类型,比如线性结构、树形结构和图形结构。
线性结构是我们最先接触到的,其中最典型的就是数组和链表。
数组就像是一排固定大小的格子,每个格子里都可以存放数据。
它的优点是可以通过下标快速访问元素,但缺点是插入和删除操作比较麻烦,因为需要移动大量的元素。
链表则不同,它像是一串珠子,通过指针将各个节点连接起来。
链表的插入和删除操作很方便,只需要修改指针即可,但访问元素的速度相对较慢。
树形结构也是非常重要的一种数据结构,比如二叉树、二叉搜索树等。
二叉树就像是一棵倒立的树,每个节点最多有两个子节点。
二叉搜索树则是一种特殊的二叉树,它的左子树中的节点值都小于根节点的值,右子树中的节点值都大于根节点的值。
这种特殊的结构使得查找、插入和删除操作的效率都很高。
图形结构则更加复杂,它用于描述多对多的关系。
比如社交网络中人与人的关系,就可以用图形结构来表示。
学习数据结构,不仅要理解各种结构的特点和操作方法,还要能够通过编程实现它们。
在专升本考试中,通常会考查我们对常见数据结构的理解和应用能力。
比如,让我们用给定的编程语言实现一个链表的插入操作,或者分析一个算法在特定数据结构上的时间复杂度和空间复杂度。
时间复杂度和空间复杂度是衡量算法和数据结构性能的重要指标。
时间复杂度表示算法运行所需的时间,通常用大O 记号来表示。
比如,一个算法的时间复杂度是 O(n),表示它的运行时间与输入数据的规模n 成正比。
专升本《数据结构》在当今数字化的时代,数据结构作为计算机科学中的重要基石,对于想要通过专升本提升自己学历和专业能力的同学来说,是一门至关重要的课程。
数据结构是什么呢?简单来说,它是研究数据的组织、存储和操作的方式。
就好像我们整理房间,需要有合理的方式来摆放物品,以便于快速找到和使用它们。
在计算机中,数据结构就是帮助我们高效地管理和处理大量数据的方法。
常见的数据结构有很多种,比如数组、链表、栈、队列、树和图等等。
先来说说数组,它是一种最简单也最常用的数据结构。
想象一下一排整齐的格子,每个格子里都能存放一个数据,这就是数组。
数组的优点是查找速度快,如果你知道要找的数据在哪个位置,一下子就能找到。
但它也有缺点,比如插入和删除数据时比较麻烦,因为可能需要移动大量的数据。
链表则与数组不同,它就像是一串珠子,每个珠子(节点)里不仅存放着数据,还包含指向下一个节点的指针。
链表在插入和删除数据时非常方便,只需要修改指针就行,但查找数据就相对较慢,需要从头开始一个一个节点地找。
栈和队列也很有意思。
栈就像一个只有一个出入口的桶,先放进去的东西最后才能拿出来,这叫“后进先出”。
队列则像排队买票的队伍,先到的先服务,是“先进先出”。
树是一种层次结构,比如二叉树,它就像一棵倒立的树,每个节点最多有两个子节点。
树结构在查找、插入和删除数据时都有比较高效的算法。
图则更加复杂,它可以用来表示各种关系,比如城市之间的道路连接。
学习数据结构,不仅要理解这些基本的结构,还要掌握它们的操作算法。
比如如何在数组中查找特定的元素,如何在链表中插入新节点,如何遍历一棵树等等。
这需要我们具备一定的逻辑思维和编程能力。
对于专升本的同学来说,学习数据结构可能会遇到一些挑战。
首先,可能之前的基础不够扎实,对计算机编程的概念和语法还不够熟悉。
这时候,就需要多花时间去复习和巩固基础知识,比如编程语言的语法、控制结构等。
其次,数据结构的概念比较抽象,需要我们通过大量的实例和练习来加深理解。
数据结构,专科一、简答题(1、假设一个有向图的顶点集合V={c1,c2,c3,c4,c5},弧集S={<c1,c2>,<c1,c3>,<c2,c5>,<c3,c2>,<c3,c4>,<c5,c4>},(1)试根据上述关系,画出该有向图;(2)该图有环吗?若无环,则写出它的一个拓扑有序序列;若有环,请写出组成环的顶点序列。
答:2、已知某二叉树的先序序列为{ ABHFDECKG },中序序列为{ HBDFAEKCG }, 画出该二叉树。
答:二叉树是a/ \b e/ \ \h f c/ / \d k g后序是hdfbkgcea3、已知关键字序列{70,83,100,65,10,9,7,32},现对其从小到大排序,写出快速排序每一趟结束时的关键字状态。
答#include<stdio.h>int main(){int i,j,t;int a[7]={70,83,100,65,10,32,7,9};for(j=0;j<6;j++)//进行6次循环for(i=0;i<6-j;i++)// 每次实现6-j次循环if(a[i]>a[i+]){ t=a[i];a[i]=a[i+1];a[i+1]=t;}//每次a[i]与a[i+1]比较,大的就调换两者位置for(i=0;i<7;i++)printf("%d ",a[i]);}譬如第一次结果就是70,83,100,65,10,32,7,970比83小,所以位置没变。
4、设s="I AM A WORKER",t=" GOOD",q=" WORKER"。
求:StrLength(s),StrLength(t) ,SubString(s,8,6) ,Index(s,q,1) 。
答:strlength(s)=14;strlength(t)=4;substr(s,8,6)=worker;substr(s,q,1)=o;5、在单链表中设置头结点有什么作用?答:头结点就是在单链表的开始结点之前附加的一个结点,设置头结点的优点有两个:(1)由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作就和在表的其他位置上一样,无须进行其他特殊处理;(2)无论链表是否为空,其头指针是指向头结点的非空指针(空表中头结点的指针域空),因此空表和非空表的处理也就一样了。
6、设哈希函数H(key)=key MOD 13,用线性探测再散列法解决冲突。
对关键字序列{ 55,19,01,68,23,27,20,84 }在地址空间为0-10的散列区中建哈希表,画出此表,并求等概率情况下查找成功时的平均查找长度。
答:二、编程题1、设顺序表va中的数据元素递增有序。
设计算法,将x插入到顺序表的适当位置上,并仍保持该表的有序性。
答:.status insert_Sq(SqList *va,ElemType x){int i;if( va->length==va->listsize) exit OVERFLOW;for( i=va->length-1;i>=0 && va->elem[i]>x;--i)va->elem[i+1]= va->elem[i];va->elem[i+1]=x; va->length++;return OK;}2、编写递归算法, 按先序顺序输出二叉链表存储的二叉树中所有度为2的结点。
答:int nodes(BiTree T){if(!T) return 0;return nodes(T->lchild)+nodes(T->rchild)+1; }3、 若希望循环队列中的元素都能利用,需设一个标志域tag,并以tag 的值为0或1来区分头、尾指针相同时队列的状态是“空”还是“满”。
试编写与此结构相应的入队列的算法。
1.假设一个有向图的顶点集合V={c1,c2,c3,c4,c5},弧集S={<c1,c2>,<c1,c3>,<c2,c5>,<c3,c2>, <c3,c4>,<c5,c4>}, (1)试根据上述关系,画出该有向图;(2)写出该图从 c1出发的一个深度优先遍历序列。
答:1)邻接矩阵: ⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡00110001000000000100000100000010(2)可能的拓扑序列为:15234 (注意4一定是最后一个,2一定在1和5后) (3)12345 (4)524312 .已知一组权值分别是3、12、7、4、2、8、11,画出叶子分别对应这些权值的Huffman树,并求其带权路径长度。
答:已知下列字符ABCDEFG的权值分别为3,12,7,4,2,8,11,是设计哈夫曼编码A B C D E F G先后结合的结点:(2,3),(5,4),(7,8),(9,11),(15,12),(20,27),如图:编码:A:0001B:113.设关键字集合为{10,2,14,8,12,13},用堆排序方法对其从小到大排序,写出堆排序的初态、建堆和排序过程中重建堆的过程。
答:堆排序初态: {10,2,14,8,12,13}建堆:{14 12 13 8 2 10}输出14之后再建堆:{13 12 10 8 2 14}输出13之后再建堆:{12 8 10 2 13 14}输出12之后再建堆:{10 8 2 12 13 14}输出10之后再建堆:{8 2 10 12 13 14}输出8之后再建堆:{2 8 10 12 13 14}有序4.设s="I AM A WORKER",t=" GOOD",q=" WORKER"。
求:StrLength(s),StrLength(t) ,SubString(s,8,6) ,Index(s,q,1) 。
答;StrLength是字符串长度,SubString(s,8,7)是截取s,第8个开始,截取7个字符答::StrLength(s)=13StrLength(t)=4SubString(s,8,6)=studentIndex(s,q,1)=35.描述以下3个关于单链表的术语的区别:头指针、头结点、首元结点。
答:头结点:是为了方便操作链表而附设的,头结点数据域通常用来保存跟链表有关的信息,比如链表的长度;首元结点:就是链表里“正式”的第一个结点,即链表的开始结点。
形如a1,a2,a3,...an;头指针:头指针是指向链表的基地址。
如果链表存在头结点则头指针就是指向头结点的地址,反之指向首元结点的地址。
6.设散列函数H(key)=key MOD 11,用线性探测再散列法解决冲突。
对关键字序列{ 13,28,72,5,16,18,7,11,24 }在地址空间为0-10的散列区中建散列表,画出此表,并求等概率情况下查找成功时的平均查找长度。
答:ASL=(1+1+1+2+5+1+1+4)/8=16/8=2二、编程题(每题10分,共30分)1.设计算法,实现单链表的就地逆置,即利用原表的存储空间将线性表(a1,a2,…,an)逆置为(an ,an-1,…,a1)。
答:void reverse(LinkList L){/*带头结点*/LinkList p;p=L->next; L->next=NULL;for(; p; p=p->next){q=p->next;p->next=L->next;L->next=p;}}2.编写递归算法,求二叉链表表示的二叉树T的叶子结点个数。
答:int leafNum(bnode* root){static int num=0;if(!root->left&&!root->right)num++;if(root->left)leafNum(root->left);if(root->right)leafNum(root->right);return num;}4.假设将循环队列定义为:以整型域变量front和length分别指示循环队列中队头元素位置和队列中元素个数,指针elem指示存放队列元素的连续空间的首地址,写出相应的入队列的算法。
答:算法:#define MAXQSIZE 100typedef struct {ElemType *elem;int front;int length;}CycQueue;status EnQueue(CycQueue *Q, ElemType e){if (Q->length==MAXQSIZE) return ERROR;Q->elem[(Q->front+Q->length) % MAXQSIZE]=e;Q->length++;return OK;}status DeQueue(CycQueue *Q, ElemType *e){if (Q->length==0) return ERROR;*e= Q->elem[Q->front];Q->length - -;return OK;}。