数据结构考试重点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构
第一章绪论
1、数据结构的定义:按照某种逻辑关系组织起来的数据集、数据与数据间的逻辑关系在计算机存储器中的存储形式以及定义在数据集上的一组操作与操作的实现这三个方面统称为数据结构。
2、数据主要分为两大类:数值型数据和非数值类型数据。数值型数据主要包括整数、实数和复数等;非数值类型数据包括字符、字符串、文字、声音、图形、图像等。
3、数据结构的逻辑结构是指数据元素的集合以及定义在该集合上的数据元素之间的一种或多种特定关系。
4、数据结构的逻辑结构是根据解决问题的功能目标而建立的;
数据结构的存储结构是根据解决问题的性能要求而建立的。
5、数据类型是一个具体相同性质的值的集合以及定义在该集合上的一组操作的总称。数据类型定义了数据的性质、取值范围以及对数据所能进行的一组操作。
6、根据数据元素之间逻辑关系的不同特性,可将数据结构分为:集合、线性机构、树形结构和图状结构。
7、一个非空的线性结构的逻辑特点:1.只有一个数据元素没有前驱,称其为“第一个”元素;2.只有一个数据元素没有后继,称其为“最后一个”元素;3.除第一个元素外,其余数据元素有且只有一个前驱;4. 除最后一个元素外,其余数据元素有且只有一个后继。
8、算法是指为解决一个问题而采用的方法和步骤;
9、算法的五个特性:1.有穷性:算法必须在有限步骤及有限时间内终止,并计算出结果;2.确定性:算法的每一个操作步骤都有确切的含义,即无二义性;3. 算法的每一个操作步骤,都是有效的、可行的;4.输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合;5.输出:一个算法必须有一个或多个输出。算法的目的是为了求解,通过算法所求得的“解”即是算法的输出。注意,计算机算法的输出不一定就是计算机显示或打印输出,一个算法得到的结果实际就是算法的输出。
第二章线性表
10、线性表是一种最基本而且应用最广泛的数据结构,其特点是结构中的各数据元素之间存在着一对一的关系,是一种最典型的线性结构。
11、线性表是具有相同特性的数据元素的一个有限序列。
12、线性表中的数据元素在位置上是有序的,相邻的元素之间存在着序偶关系。
13、顺序表的顺序存储结构是指把线性表中所有数据元素,按照其逻辑顺序依次存储到计算机存储器中从指定位置开始的一块连续的存储空间中,数据元素间的存储(物理)位置即表示了它的逻辑位置。
14、顺序表基本操作的实现:1.初始化操作;2.求长度操作;3.判空操作;4.清空操作;5.取元素操作;6.按值查找操作;7.插入操作;8.删除操作。
15、算法的空间效率是指算法在计算机上运行时所需存储空间的大小。
算法的空间复杂度用大O记法表示为:S(n)=O(f(n))
随着问题规模n的增大,算法运行时所需辅助存储空间的增长率的数量级为f(n)。若算法运行时所占的存储空间与问题规模无关,是个常量,则称这种算法为原地工作,其空间复杂度用O(1)表示。
16、顺序表的优缺点:
优点:a.实现方法简单,各种高级语言中都有数组,容易实现;
b.访问元素的速度快,因为在顺序表中逻辑上相邻的两个元素在存储位置上也必定相邻,所以只要知道了第一个元素的地址,其他任何一个元素的地址都可通过简单的计算求得,故可实现随机存取,即顺序表L的第i个元素即为L.base[i-1]。
缺点:a.需占用连续的存储区,存储要求高,不能利用小块存储区;
b.由于在顺序表中逻辑上相邻的两个元素在存储位置上也必定相邻,所以在进行插入和删除操作时,需要进行大量的元素移动操作,影响了算法效率。
17、通常把使用链式存储结构来实现的线性表称为链表。
18、线性表的链式存储结构是用一组任意的存储单元来存放线性表中的数据元素,这组存储单元既可以是连续的,也可以是不连续的,甚至可以零散分布在内存中的任意位置上。
19、链表的相关概念:1.首元结点,指链表中用于存储线性表的第一各数据元素的结点;2.头结点,在链表中为了便于进行插入和删除等操作,为链表增设一个辅助结点,称该辅助结点为链表的头结点。头结点在链表中可有可无;3.头指针,是指向链表中第一个结点的指针,可以唯一地表示一个链表;4.空指针,当链表中某个结点的指针域为空时,称该结点的指针域为空指针。
20、链表的表长是指链表中存放数据元素的结点数目。
21、链表分为单链表、双向链表和循环链表。
22、单链表的建立操作:
1.头插法建立单链表:在单链表的建立过程中,总是将由读入元素所生成的结点插入到链表的表首端,即插入时始终将新生成结点作为第1个结点插入。
2.尾插法建立单链表:与头插法正好相反,在单链表的建立过程中,其每次都是将所生成的新结点插入到单链表尾端,即在插入时始终是新生成结点作为最后一个结点插入。
23、链表的优缺点:
优点:a.能充分利用内存中的小块存储区;
b.便于进行插入和删除操作,在进行插入和删除操作时不需要进行元素的移动,只需修改相应结点的指针域即可。
缺点:a.与顺序表相比,其实现方法较复杂,特别在对双链表进行操作时不仅要考虑向后指向的“链”,还需考虑向前指向的“链”;
b.无法像顺序表那样实现随机存取,在链表中要找某个结点只能从表头开始向后寻找;
c.在链表的每个结点需要附加存储关系信息(指针域),因此当问题规模较小且基本一定时,链表所需存储空间比顺序表多。
第三章栈与队列
24、栈的定义:栈是一种将插入操作与删除操作限制在同一段进行的特殊线性表。在这个特殊的线性表中,进行插入与删除操作的一端称为栈顶(Top),另一端则称为栈底(Bottom)。也就是说栈的插入操作与删除操作均在栈顶端进行,其中,插入操作称为入栈操作(Push),删除操作称为出栈操作(Pop)。不含任何元素的栈称为空栈。