《数据结构与算法设计》d(4)
- 格式:pptx
- 大小:1.14 MB
- 文档页数:15
第1章绪论1.选择题(1)C (2)B (3)C (4)D (5)B2.判断题(1)√(2)Ⅹ(3)Ⅹ(4)Ⅹ(5)√3.简答题(1)根据数据元素之间的不同逻辑关系,通常将其划分为哪几类结构?【解答】常见的四种逻辑结构有:①集合结构:数据元素间的关系是“属于同一个集合”。
②线性结构:数据元素之间存在着一对一的关系。
③树型结构:数据元素之间存在着一对多的关系。
④图型结构:数据元素之间存在着多对多的关系。
(2)请描述线性结构中数据元素与数据元素之间的关系特点?【解答】线性结构的特点是数据元素之间是一种线性关系,数据元素“一个接一个的排列”。
在线性结构中,有且仅有一个元素被称为“第一个”,除第一个元素之外其他元素均有唯一一个“前驱”;有且仅有一个元素被称为“最后一个”,除最后一个元素之外其他元素均有唯一一个“后继”。
(3)请描述树形结构中数据元素与数据元素之间的关系特点?【解答】树形存储结构,就是数据元素与元素之间存在着一对多关系的数据结构。
在树形存储结构中,树的根节点没有前驱结点,其余的每个节点有且只有一个前驱结点,除叶子结点没有后续节点外,其他节点的后续节点可以有一个或者多个。
(4)常用的存储结构有哪几种,各自的特点是什么?【解答】常见的四种存储结构有:①顺序存储:把逻辑上相邻的元素存储在物理位置相邻的存储单元中。
顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。
②链接存储:对逻辑上相邻的元素不要求不要求物理位置相邻的存储单元,元素间的逻辑关系通过附设的指针域来表示。
③索引存储:通过建立索引表存储结点信息的方法,其中索引表一般存储结点关键字和一个地点信息,可通过该地址找到结点其它信息。
④散列存储:根据结点的关键字直接计算出该结点的存储地址的方法。
(5)简述算法和程序的区别。
【解答】一个算法若用程序设计语言来描述,则它就是一个程序。
算法的含义与程序十分相似,但又有区别。
一个程序不一定满足有穷性。
《数据结构》教学大纲一、课程基本信息课程名称:数据结构总学时:64(理论课内学时48,上机课内学时16)课程设计:24课程类型:必修课考试形式:半开卷考试讲课对象:计算机本科建议教材:《数据结构》(C语言版)陈明编著清华大学出版社课程简介:数据结构课程介绍如何组织各种数据在计算机中的存储、传递和转换。
内容包括:数组、链接表、栈和队列、串、树与森林、图、排序、查找、索引与散列结构等。
课程以结构化程序设计语言C语言作为算法的描述工具,强化数据结构基本知识和结构化程序设计基本能力的双基训练。
为后续计算机专业课程的学习打下坚实的基础。
二、课程的教学目标“数据结构”是计算机相关专业的一门重要专业基础课,是计算机学科的公认主干课。
课程内容由数据结构和算法分析初步两部份组成。
数据结构是针对处理大量非数值性程序问题而形成的一门学科,内涵丰富、应用范围广。
它既有完整的学科体系和学科深度,又有较强的实践性。
通过课程的学习,应使学生理解和掌握各种数据结构(物理结构和逻辑结构)的概念及其有关的算法;熟悉并了解目前常用数据结构在计算机诸多领域中的基本应用。
算法分析强调最基本的算法设计技术和分析方法。
要求学生从算法和数据结构的相互依存关系中把握应用算法设计的艺术和技能。
经过上机实习和课程设计的训练,使学生能够编制、调试具有一定难度的中型程序;以培养良好的软件工程习惯和面向对象的软件思维方法。
“数据结构”的前序课是《离散数学》、《C语言程序设计与算法初步》。
三、理论教学内容的基本要求及学时分配1、序论(2学时)学习目标:熟悉各类文件的特点,构造方法以及如何实现检索,插入和删除等操作。
重点与难点:本章无。
知识点:数据、数据元素、数据结构、数据类型、抽象数据类型、算法及其设计原则、时间复杂度、空间复杂度。
2、线性表(4学时)学习目标:(1)了解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构和链式存储结构。
数据结构与算法一选择题1.算法的计算量的大小称为计算的()。
A.效率 B. 复杂性 C. 现实性 D. 难度2.下面说法错误的是()(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)3. 连续存储设计时,存储单元的地址()。
A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续4. 下述哪一条是顺序存储结构的优点?()A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示5.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表6.下面的叙述不正确的是()A.线性表在链式存储时,查找第i个元素的时间同i的值成正比B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关7.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<=i<=n+1)。
A. O(0)B. O(1)C. O(n)D. O(n2)8.双向链表中有两个指针域,llink和rlink,分别指回前驱及后继,设p指向链表中的一个结点,q指向一待插入结点,现要求在p前插入q,则正确的插入为()(^.相当于—>)A. p^.llink:=q; q^.rlink:=p; p^.llink^.rlink:=q; q^.llink:=p^.llink;B. q^.llink:=p^.llink; p^.llink^.rlink:=q; q^.rlink:=p; p^.llink:=q^.rlink;C. q^.rlink:=p; p^.rlink:=q; p^.llink^.rlink:=q; q^.rlink:=p;D. p^.llink^.rlink:=q; q^.rlink:=p; q^.llink:=p^.llink; p^.llink:=q;9.下列排序算法中,其中()是稳定的。
《数据结构与算法》第四章串知识点及例题精选串(即字符串)是一种特殊的线性表,它的数据元素仅由一个字符组成。
4.1 串及其基本运算4.1.1 串的基本概念1.串的定义串是由零个或多个任意字符组成的字符序列。
一般记作:s="s1 s2 … s n""其中s 是串名;在本书中,用双引号作为串的定界符,引号引起来的字符序列为串值,引号本身不属于串的内容;a i(1<=i<=n)是一个任意字符,它称为串的元素,是构成串的基本单位,i是它在整个串中的序号; n为串的长度,表示串中所包含的字符个数,当n=0时,称为空串,通常记为Ф。
2.几个术语子串与主串:串中任意连续的字符组成的子序列称为该串的子串。
包含子串的串相应地称为主串。
子串的位置:子串的第一个字符在主串中的序号称为子串的位置。
串相等:称两个串是相等的,是指两个串的长度相等且对应字符都相等。
4.2 串的定长顺序存储及基本运算因为串是数据元素类型为字符型的线性表,所以线性表的存储方式仍适用于串,也因为字符的特殊性和字符串经常作为一个整体来处理的特点,串在存储时还有一些与一般线性表不同之处。
4.2.1 串的定长顺序存储类似于顺序表,用一组地址连续的存储单元存储串值中的字符序列,所谓定长是指按预定义的大小,为每一个串变量分配一个固定长度的存储区,如:#define MAXSIZE 256char s[MAXSIZE];则串的最大长度不能超过256。
如何标识实际长度?1. 类似顺序表,用一个指针来指向最后一个字符,这样表示的串描述如下:typedef struct{ char data[MAXSIZE];int curlen;} SeqString;定义一个串变量:SeqString s;这种存储方式可以直接得到串的长度:s.curlen+1。
如图4.1所示。
s.dataMAXSIZE-1图4.1 串的顺序存储方式12. 在串尾存储一个不会在串中出现的特殊字符作为串的终结符,以此表示串的结尾。
第1章概论1.数据、数据元素、数据结构、数据类型的含义分别是什么?数据:对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并由计算机程序处理的符号的总称。
数据元素:数据的基本单位,在计算机程序中通常作为一个整体考虑。
数据结构:数据元素之间的关系+运算,是以数据为成员的结构,是带结构的数据元素的集合,数据元素之间存在着一种或多种特定的关系。
数据类型:数据类型是用来区分不同的数据;由于数据在存储时所需要的容量各不相同,不同的数据就必须要分配不同大小的内存空间来存储,所有就要将数据划分成不同的数据类型。
数据类型包含取值范围和基本运算等概念。
2.什么是数据的逻辑结构?什么是数据的物理结构?数据的逻辑结构与物理结构的区别和联系是什么?逻辑结构:数据的逻辑结构定义了数据结构中数据元素之间的相互逻辑关系。
数据的逻辑结构包含下面两个方面的信息:①数据元素的信息;②各数据元素之间的关系。
物理结构:也叫储存结构,是指逻辑结构的存储表示,即数据的逻辑结构在计算机存储空间中的存放形式,包括结点的数据和结点间关系的存储表示。
数据的逻辑结构和存储结构是密不可分的,一个操作算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采与的存储结构。
采用不同的存储结构,其数据处理的效率是不同的。
因此,在进行数据处理时,针对不同问题,选择合理的逻辑结构和存储结构非常重要。
3.数据结构的主要操作包括哪些?对于各种数据结构而言,他们在基本操作上是相似的,最常用的操作有:●创建:建立一个数据结构;●清除:清除一个数据结构;●插入:在数据结构中增加新的结点;●删除:把指定的结点从数据结构中删除;●访问:对数据结构中的结点进行访问;●更新:改变指定结点的值或改变指定的某些结点之间的关系;●查找:在数据结构中查找满足一定条件的结点;●排序:对数据结构中各个结点按指定数据项的值,以升序或降序重新排列。
4.什么是抽象数据类型?如何定义抽象数据类型?抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。
《数据结构与算法》习题与答案(解答仅供参考)一、名词解释:1. 数据结构:数据结构是计算机存储、组织数据的方式,它不仅包括数据的逻辑结构(如线性结构、树形结构、图状结构等),还包括物理结构(如顺序存储、链式存储等)。
它是算法设计与分析的基础,对程序的效率和功能实现有直接影响。
2. 栈:栈是一种特殊的线性表,其操作遵循“后进先出”(Last In First Out, LIFO)原则。
在栈中,允许进行的操作主要有两种:压栈(Push),将元素添加到栈顶;弹栈(Pop),将栈顶元素移除。
3. 队列:队列是一种先进先出(First In First Out, FIFO)的数据结构,允许在其一端插入元素(称为入队),而在另一端删除元素(称为出队)。
常见的实现方式有顺序队列和循环队列。
4. 二叉排序树(又称二叉查找树):二叉排序树是一种二叉树,其每个节点的左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。
这种特性使得能在O(log n)的时间复杂度内完成搜索、插入和删除操作。
5. 图:图是一种非线性数据结构,由顶点(Vertex)和边(Edge)组成,用于表示对象之间的多种关系。
根据边是否有方向,可分为有向图和无向图;根据是否存在环路,又可分为有环图和无环图。
二、填空题:1. 在一个长度为n的顺序表中,插入一个新元素平均需要移动______个元素。
答案:(n/2)2. 哈希表利用______函数来确定元素的存储位置,通过解决哈希冲突以达到快速查找的目的。
答案:哈希(Hash)3. ______是最小生成树的一种算法,采用贪心策略,每次都选择当前未加入生成树且连接两个未连通集合的最小权重边。
答案:Prim算法4. 在深度优先搜索(DFS)过程中,使用______数据结构来记录已经被访问过的顶点,防止重复访问。
答案:栈或标记数组5. 快速排序算法在最坏情况下的时间复杂度为______。
数据结构与算法经典书籍1. 《算法导论》《算法导论》是计算机科学领域中经典的教材,由Thomas H. Cormen等人合著。
该书详细介绍了各种常用的数据结构和算法,包括排序、查找、图算法等。
它以清晰的语言和丰富的实例展示了算法的设计和分析方法,对于理解和掌握算法设计与分析的基本原理具有重要意义。
2. 《数据结构与算法分析:C++语言描述》该书由Mark Allen Weiss编写,是一本介绍数据结构和算法的经典教材。
它以C++语言为基础,详细讲解了各种常用的数据结构(如链表、栈、队列、树、图等)和算法(如排序、查找、图算法等),并给出了具体的代码实现。
同时,该书还重点讲解了算法的分析和性能评估,帮助读者理解算法的时间复杂度和空间复杂度。
3. 《算法》《算法》是Sedgewick和Wayne合著的一本数据结构和算法教材。
该书系统地介绍了各种常用的数据结构和算法,并通过大量的示例和习题帮助读者巩固所学知识。
它涵盖了排序、查找、图算法等领域,并提供了Java和C++两种语言实现的代码。
这本书以其简洁明了的风格和深入浅出的讲解方法,深受学生和专业人士的喜爱。
4. 《编程珠玑》《编程珠玑》是Jon Bentley所著的一本经典之作,介绍了一系列有关程序设计和算法的问题及解决方法。
该书通过实际问题的分析和解决过程,展示了一种高效的编程思维方式。
它以具体的案例引入问题,然后通过分析和优化算法,给出了高效的解决方案。
这本书不仅适合程序员和软件工程师,也对于对算法和数据结构感兴趣的读者具有很高的参考价值。
5. 《数据结构与算法分析:Java语言描述》该书由Mark Allen Weiss编写,是一本使用Java语言描述的数据结构和算法教材。
它以清晰的语言和丰富的实例介绍了各种常用的数据结构和算法,并给出了具体的代码实现。
同时,该书还讲解了算法的分析和性能评估,帮助读者理解算法的时间复杂度和空间复杂度。
6. 《剑指Offer:名企面试官精讲典型编程题》《剑指Offer》是一本专注于面试编程题的书籍,该书由左程云所著。
第一章绪论1. 从逻辑上可以把数据结构分为( C )两大类。
A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构2。
在下面的程序段中,对x的赋值语句的频度为( C )。
For(k=1;k〈=n;k++)For(j=1;j〈=n;j++)x=x+1;A.O(2n)B.O(n) C.O(n2) D.O(log2n)3。
采用顺序存储结构表示数据时,相邻的数据元素的存储地址( A )。
A.一定连续B.一定不连续C.不一定连续D.部分连续、部分不连续4。
下面关于算法的说法,正确的是( D ).A.算法的时间复杂度一般与算法的空间复杂度成正比B.解决某问题的算法可能有多种,但肯定采用相同的数据结构C.算法的可行性是指算法的指令不能有二义性D.同一个算法,实现语言的级别越高,执行效率就越低5。
在发生非法操作时,算法能够作出适当处理的特性称为( B )。
A.正确性B.健壮性C.可读性D.可移植性第二章线性表1。
线性表是( A ).A.一个有限序列,可以为空B.一个有限序列,不能为空C.一个无限序列,可以为空D.一个无限序列,不能为空2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。
插入一个元素时平均要移动表中的( A )个元素.A.n/2 B.(n+1)/2 C.(n-1)/2 D.n3.线性表采用链式存储时,其地址( D ).A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续与否均可以4.用链表表示线性表的优点是(C)。
A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除D.数据元素的物理顺序与逻辑顺序相同5.链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( C )存储方式最节省运算时间.A.单链表B.双链表C.单循环链表D.带头结点的双向循环链表6.下面关于线性表的叙述,错误的是( B )。
数据结构与算法课程设计报告课程设计题目:图的算法实现专业班级:信息与计算科学1002班目录摘要 (1)1、引言 (1)2、需求分析 (1)3、概要设计 (2)4、详细设计 (4)5、程序设计 (10)6、运行结果 (18)7、总结体会 (19)摘要(题目): 图的算法实现实验内容图的算法实现问题描述:(1)将图的信息建立文件;(2)从文件读入图的信息,建立邻接矩阵和邻接表;(3)实现Prim、Kruskal、Dijkstra和拓扑排序算法。
关键字:邻接矩阵、Dijkstra和拓扑排序算法1.引言本次数据结构课程设计共完成图的存储结构的建立、Prim、Kruskal、Dijkstra 和拓扑排序算法等问题。
通过本次课程设计,可以巩固和加深对数据结构的理解,通过上机和程序调试,加深对课本知识的理解和熟练实践操作。
(1)通过本课程的学习,能够熟练掌握数据结构中图的几种基本操作;(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
使用语言:CPrim算法思想:从连通网N={V,E}中的某一顶点v0出发,选择与它关联的具有最小权值的边(v0,v),将其顶点加入到生成树的顶点集合V中。
以后每一步从一个顶点在V中,而另一个顶点不在V中的各条边中选择权值最小的边(u,v),把它的顶点加入到集合V中。
如此继续下去,直到网中的所有顶点都加入到生成树顶点集合V中为止。
拓扑排序算法思想:1、从有向图中选取一个没有前驱的顶点,并输出之;2、从有向图中删去此顶点以及所有以它为尾的弧;重复上述两步,直至图空,或者图不空但找不到无前驱的顶点为止。
没有前驱-- 入度为零,删除顶点及以它为尾的弧-- 弧头顶点的入度减1。
2.需求分析1、通过键盘输入建立一个新的有向带权图,建立相应的文件;2、对建立的有向带权图进行处理,要求具有如下功能:(1)用邻接矩阵和邻接表的存储结构输出该有向带权图,并生成相应的输出结果;(2)用Prim、Kruskal算法实现对图的最小生成树的求解,并输出相应的输出结果;(3)用Dijkstra算法实现对图中从某个源点到其余各顶点的最短路径的求解,并输出相应的输出结果;(4)实现该图的拓扑排序算法。
数据结构与算法分析课后习题答案【篇一:《数据结构与算法》课后习题答案】>2.3.2 判断题2.顺序存储的线性表可以按序号随机存取。
(√)4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。
(√)6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
(√)8.在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。
(√)9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
(√)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.已知一顺序表a,其元素值非递减有序排列,编写一个算法删除顺序表中多余的值相同的元素。
数据结构与算法经典书籍数据结构与算法是计算机科学中非常重要的基础知识,对于程序员来说,掌握好数据结构与算法对于解决问题、编写高效的代码至关重要。
下面是一些经典的数据结构与算法的书籍,这些书籍涵盖了常见的数据结构和算法,可以帮助读者深入理解和应用这些知识。
1.《算法导论》(Introduction to Algorithms)这是一本经典的算法教材,由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest和Clifford Stein合著,被广泛认为是学习算法的权威之作。
书中详细介绍了各种常用的数据结构和算法,包括排序、查找、图算法等。
2.《数据结构与算法分析:C语言描述》(Data Structures and Algorithm Analysis in C)这本书由Mark Allen Weiss编写,通过C语言的描述介绍了各种数据结构和算法。
书中详细讲解了链表、栈、队列、树等数据结构以及排序、查找、图算法等算法。
3.《算法图解》(Grokking Algorithms)这是一本非常适合初学者的算法入门书籍,由Aditya Bhargava编写。
书中使用简洁的语言和图示,介绍了常见的算法和数据结构,包括二分查找、快速排序、广度优先搜索等。
4.《算法(第4版)》(Algorithms, 4th Edition)这本书由Robert Sedgewick和Kevin Wayne合著,是一本经典的算法教材。
书中介绍了各种算法和数据结构的设计和分析方法,包括排序、查找、图算法等。
5.《数据结构与算法分析:Java语言描述》(Data Structures and Algorithm Analysis in Java)这本书由Mark Allen Weiss编写,使用Java语言描述了各种数据结构和算法。
书中详细讲解了链表、栈、队列、树等数据结构以及排序、查找、图算法等算法。
国家开放大学《数据结构与算法》形考任务1-2参考答案《数据结构与算法》是“数据科学与大数据技术”专业(本科)的一门统设必修课。
课程编号:04692形考任务1一、单项选择题1.下面说法错误的是()。
A.数据结构是指互相之间存在着一种或多种关系的数据元素的集合B.数据(Data)是指客观事物的符号表示C.数据元素是表示数据的不可分割的最小标识单位D.数据的基本单位是数据元素2.数据结构中的线性结构是指()。
A.数据元素之间属于同一个集合B.数据元素之间存在着一对一的线性关系C.数据元素之间存在着一对多的线性关系D.数据元素之间存在着多对多的线性关系3.下列有关递归的说法错误的是()。
A.递归需要有边界条件、递归方程两部分构成。
B.递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算。
C.递归通常把一个复杂问题层层转化为一个与原问题相似的规模较小的问题来求解。
D.只有在函数中直接调用自身才能叫做递归函数。
4.根据数据元素之间关系的不同,数据结构分为()。
A.物理结构,逻辑结构B.集合结构,线性结构,树结构,图结构C.顺序结构,链表结构D.递归结构,普通结构5.栈S最多能容纳4个元素。
现有6个元素按A、B、C、D、E、F的顺序进栈,下列()序列是可能的出栈序列。
A.E、D、C、B、A、FB.B、C、E、F、A、DC.B、D、C、F、E、AD.A、D、F、E、B、C6.顺序循环队列容量为50,队头表示第一个元素的位置,队尾表示最后一个元素的下一个位置,当队头为31,队尾为8的时候,队列中共有()个元素。
A.25B.26C.27D.287.对线性表,在下列()情况下应当采用链表表示。
A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变8.若用一个大小为8的数组来实现循环队列,且当tail和head的值分别为6,0。
当从队列中删除两个元素,再加入一个元素后,tail和head的值分别为()。
《数据结构与算法》课程教学大纲课程代码:12281030适用专业:计算机应用技术总学时数: 68学时,其中:理论教学34学时,实践教学34学时。
学分:4.5先修课程:《C语言程序导论》、《程序设计导论》考核方式:机试一、制订大纲的依据本大纲根据2013年软件技术专业教学计划制订。
二、课程简介数据结构是介于数学、计算机硬件和计算机软件之间的一门计算机科学与技术专业的核心课程,是高级程序设计语言、编译原理、操作系统、数据库等课程的基础。
同时,数据结构技术也广泛应用于信息科学、系统工程、应用数学以及各种工程技术领域。
数据结构课程集中讨论软件开发过程中的设计阶段、同时设计编码和分析阶段的若干基本问题。
此外,为了构造出好的数据结构及其实现,还需考虑数据结构及其实现的评价与选择。
因此,数据结构的内容包括抽象、实现和评价三个层次,从数据表示和数据处理上看有五个基本组成“要素”分别是逻辑结构,存储结构、基本运算、算法及不同数据结构的比较与算法分析。
三、课程性质、教育目标(一)性质:本课程为计算机系软件技术专业的专业课。
(二)教育目标:通过本课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。
四、课程教学内容与基本要求第一部分绪论(一)教学内容数据结构的基本概念和术语;抽象数据类型的表示;算法和算法分析。
(二)重点、难点重点:数据结构的基本概念及相关术语。
难点:算法的时间复杂度分析。
(三)教学基本要求知识要求:了解:抽象数据类型及面向对象概念;理解:算法的定义及算法的特性;掌握:数据结构的基本概念、算法的性能分析与度量方法。
第二部分线性表(一)教学内容1.线性表的定义及操作;2.线性表的顺序存储定义及操作实现;3.单链表的定义;单链表中的插入与删除;带表头结点的单链表;静态链表;4.循环链表的类定义及运算;5.双向链表的类定义及运算;6.线性表的应用:多项式及其相加。
Final examination2009 FallData Structure and Algorithm DesignClass: Student Number: Name: Teacher1.Single-Choice(20 points)(1) Consider the following definition of a recursive function ff.int ff( int n ){ if( n == 0 ) return 1;return 2 * ff( n - 1 );}If n > 0, what is returned by ff( n )?(a) log2 n (b) n2(c) 2n (d) 2 * n(2) An input into a stack is like 1,2,3,4,5,6. Which output is impossible? .a. 2,4,3,5,1,6b.3,2,5,6,4,1c.1,5,4,6,2,3d.4,5,3,6,2,1(3) Which of the following data structures uses a "Last-in, First-out" policy for element insertionand removal?(a) Stack (b) Tree (c) Hash table (d) Queue(4) If deleting the i th key from a contiguous list with n keys, keys need to be shifted leftone position.a. n-ib. n-i+1c. id. n-i-1(5) Sorting a key sequence(28,84,24,47,18,30,71,35,23), its status is changed as follows.23,18,24,28,47,30,71,35,8418,23,24,28,35,30,47,71,8418,23,24,28,30,35,47,71,84The sorting method is called(a).select sorting (b).Shell sorting(c).merge sorting (d).quick sorting(6) The number of keyword in every node except root in a B- tree of order 5 is _ _ at leasta. 1b. 2c. 3d. 4(7) When sorting a record sequence with multiple keys using Least Significant Digit method, the sorting algorithm used for every digit except the least significant digit .a. must be stableb. must be unstablec. can be either stable or unstable(8) In the following four Binary Trees, is not a complete Binary Tree.a b c d(9) The maximum number of nodes on level i of a binary tree is .a.2i-1b. 2ic.2id.2i-1(10) If the Binary Tree T2 is transformed from the Tree T1, then the postorder traversal sequenceof T1 is the traversal sequence of T2.a. preorderb. inorderc. postorderd. level order(11) In the following sorting algorithm, is an unstable algorithm.a. the insertion sortb. the bubble sortc. quicksortd. mergesort(12) In order to find a specific key in an ordered list with 100 keys using binary search algorithm,the maximum times of comparisons is .a. 25b.10c. 1d.7(13) The result of traversing inorderly a Binary Search Tree is a(an) order.a. descending or ascendingb. descendingc. ascendingd. disorder(14) To sort a key sequence in ascending order by Heap sorting needs to construct a heap.(a)min (b) max (c) either min or max (d)complete binary tree(15). Let i, 1≤i≤n, be the number assigned to an element of a complete binary tree. Which ofthe following statements is NOT true?(a) If i>1, then the parent of this element has been assigned the number ⎣i/2⎦.(b) If 2i>n, then this element has no left child. Otherwise its left child has been assigned thenumber 2i.(c) If 2i+1>n, then this element has no right child. Otherwise its right child has beenassigned the number 2i+1.(d) The height of the binary tree is ⎣log2 (n +1)⎦(16). C onsider the following C++ code fragment.x=191; y=200;while(y>0)if(x>200) {x=x-10;y--;}else x++;What is its asymptotic time complexity?(a) O(1) (b) O(n) (c) O(n2) (d) O(n3)(17) In a Binary Tree with n nodes, there are non-empty pointers.a. n-1b. n+1c. 2n-1d.2n+1(18) In an undirected graph with n vertices, the maximum number of edges is .a. n(n+1)/2b. n(n-1)/2c. n(n-1)d.n2(19) Assume the preorder traversal sequence of a binary tree T is ABEGFCDH, the inordertraversal sequence of T is EGBFADHC, then the postorder traversal sequence of T will be .a. GEFBHDCAb. EGFBDHCAc. GEFBDHCAd. GEBFDHCA(20) The binary search is suitable for a(an) list.a. ordered and contiguousb. disordered and contiguousc. disordered and linkedd. ordered and linked2、Fill in blank (10 points)(1)A Huffman tree is made of weight 11,8,6,2,5 respectively, its WPL is ___ __。