(完整版)非常实用的数据结构知识点总结
数据结构考研笔记整理(全)
数据结构考研笔记整理(全)数据结构考研笔记整理
数据结构是计算机科学中非常重要的一门课程,对于计算机专业的学生来说,考研复习过程中对数据结构的准备非常关键。因此,我们需要系统地整理数据结构的相关知识点,以便更好地理解和掌握。
一、线性表
线性表是数据结构中最基本的一种数据结构,它是一种有序的数据元素的集合。常见的线性表有顺序表和链表。
1. 顺序表
顺序表是将数据元素存放在一块连续的存储空间中,通过元素的下标来访问。具有随机访问的特点,但插入和删除操作比较麻烦。适用于查找操作频繁的场景。
2. 链表
链表是将数据元素存放在任意的存储空间中,通过指针来连接各个元素。具有插入和删除操作方便的特点,但不支持随机访问。适用于插入和删除操作频繁的场景。
二、栈和队列
栈和队列是特殊的线性表,它们都具有先进先出的特点。
1. 栈
栈是一种特殊的线性表,只能在表的一端进行插入和删除操作,即“先进后出”。常见的应用有函数调用的过程中的参数传递、表达式求
值等。
2. 队列
队列也是一种特殊的线性表,只能在表的一端进行插入操作,而在
另一端进行删除操作,即“先进先出”。常见的应用有任务调度、缓冲
区管理等。
三、树
树是一种非常重要的非线性数据结构,它由节点和边组成。树具有
层次结构,常见的树结构有二叉树、二叉搜索树和平衡二叉树等。
1. 二叉树
二叉树是每个节点最多有两个子树的树结构,包括左子树和右子树。二叉树的遍历方式有前序遍历、中序遍历和后序遍历。
2. 二叉搜索树
二叉搜索树是一种特殊的二叉树,它的左子树中的所有节点都小于
根节点,右子树中的所有节点都大于根节点。具有快速查找和插入的
大一数据结构知识点总结归纳
大一数据结构知识点总结归纳数据结构是计算机科学的基础课程之一,它研究的是如何组织和管理数据以实现高效的存储和检索。在大一学习数据结构时,我们需要掌握一些基本的知识点,下面将对这些知识点进行总结归纳。
一、线性结构
1. 数组 (Array)
数组是一种连续存储的线性数据结构,它由相同类型的元素组成,可以通过索引来访问和修改元素。在使用数组时,需要注意数组的下标从0开始。
2. 链表 (Linked List)
链表是一种动态的数据结构,它由节点组成,每个节点包含数据和指向下一个节点的指针。链表分为单向链表和双向链表,其中双向链表的每个节点还包含指向前一个节点的指针。
3. 栈 (Stack)
栈是一种后进先出 (LIFO) 的数据结构,只允许在表的一端进
行插入和删除操作。栈可以用数组或链表来实现。
4. 队列 (Queue)
队列是一种先进先出 (FIFO) 的数据结构,它在一端进行插入操作,在另一端进行删除操作。队列可以用数组或链表来实现,也
可以使用循环队列来实现。
二、树形结构
1. 二叉树 (Binary Tree)
二叉树是每个节点最多有两个子节点的树结构。它可以为空树,也可以由根节点和左右子树组成。二叉树的遍历方式包括前序遍历、中序遍历和后序遍历。
2. 二叉搜索树 (Binary Search Tree)
二叉搜索树是一种特殊的二叉树,它的左子树上的节点的值都
小于根节点的值,右子树上的节点的值都大于根节点的值。通过
二叉搜索树可以实现快速的插入、查找和删除操作。
3. 平衡二叉树 (AVL Tree)
数据结构知识点总结
数据结构知识点总结
数据结构是计算机科学中非常重要的一个概念,它是指一组数据
的组织方式,以及对这组数据进行操作的方法。数据结构可以分为线
性结构和非线性结构两种。下面将对常见的数据结构进行总结,希望
能对读者有所帮助。
一、线性结构
1. 数组:数组是一种最基本的数据结构,它可以存储一组具有相同类
型的数据。数组的访问时间复杂度为O(1),但插入和删除的时间复杂
度较高,为O(n)。
2. 链表:链表是由一系列的节点组成,每个节点包含数据以及指向下
一个节点的指针。链表的访问时间复杂度为O(n),但插入和删除的时
间复杂度较低,为O(1)。
3. 栈:栈是一种具有后进先出(LIFO)特点的数据结构,只能在栈顶
进行插入和删除操作。栈的访问、插入、删除的时间复杂度均为O(1)。
4. 队列:队列是一种具有先进先出(FIFO)特点的数据结构,只能在
队尾插入元素,在队头删除元素。队列的访问、插入、删除的时间复
杂度均为O(1)。
5. 双向链表:双向链表是在链表的基础上发展而来的数据结构,每个
节点不仅包含指向下一个节点的指针,还包含指向上一个节点的指针。双向链表的插入和删除操作时间复杂度为O(1)。
二、非线性结构
1. 树:树是一种由节点和边组成的数据结构,每个节点可以有多个子
节点。树有很多种类型,如二叉树、AVL树、红黑树等。树的遍历可以分为前序遍历、中序遍历、后序遍历和层序遍历等。
2. 图:图是一种由顶点和边组成的数据结构,每个顶点可以与其他顶
点相连。图可以分为有向图和无向图,常用的应用场景有社交网络和
地图导航等。图的遍历可以分为深度优先搜索和广度优先搜索等算法。
数据结构知识点全面总结—精华版
第1章绪论
内容提要:
◆数据结构研究的内容..
针对非数值计算的程序设计问题;研究计算机的操作对象以及它们之间的关系和操作..
数据结构涵盖的内容:
◆基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型..
数据——所有能被计算机识别、存储和处理的符号的集合..
数据元素——是数据的基本单位;具有完整确定的实际意义..
数据对象——具有相同性质的数据元素的集合;是数据的一个子集..
数据结构——是相互之间存在一种或多种特定关系的数据元素的集合;表示为:
Data_Structure=D; R
数据类型——是一个值的集合和定义在该值上的一组操作的总称..
抽象数据类型——由用户定义的一个数学模型与定义在该模型上的一组操作;
它由基本的数据类型构成..
◆算法的定义及五个特征..
算法——是对特定问题求解步骤的一种描述;它是指令的有限序列;是一系列输入转换为输出的计算步骤..
算法的基本特性:输入、输出、有穷性、确定性、可行性
◆算法设计要求..
①正确性、②可读性、③健壮性、④效率与低存储量需求
◆算法分析..
时间复杂度、空间复杂度、稳定性
学习重点:
◆数据结构的“三要素”:逻辑结构、物理存储结构及在这种结构上所定义的操作运算..
◆用计算语句频度来估算算法的时间复杂度..
第二章线性表
内容提要:
◆线性表的逻辑结构定义;对线性表定义的操作..
线性表的定义:用数据元素的有限序列表示
◆线性表的存储结构:顺序存储结构和链式存储结构..
顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构..
链式存储结构: 其结点在存储器中的位置是随意的;即逻辑上相邻的数据元素在物理上不一定相邻..通过指针来实现
数据结构知识点整理(清华大学出版社)(可编辑修改word版)
第一章绪论
1.数据结构:主要研究非数值计算问题中计算机的操作对象有哪些结构(逻辑结构)、这些结构在计算机中的表示及
其操作的定义和实现问题。
2.逻辑结构:不考虑实现,仅看问题域中数据元素根据相互间的逻辑关系形成的结构称为数据结构的逻辑结构。
通常说的数据结构即此义。分类:如书目表根据一对一相邻关系形成线性结构、棋盘格局间根据下棋规则(一对多)形成一个树形数据结构,城市间据通路(多对多)形成图状结构,此外还有集合结构(除同属一个集合外,无其它关联),共四类
3.数据结构(数据元素及关系/结构)在计算机中的表示或者说映像称为该数据结构的物理结构或存储结构。
4.顺序存储结构:关系采取顺序映像表示,即借助元素在存储器中的位置上的”相邻”关系隐式表示数据元素间具
有关系。此时物理结构对应一个数组。优点:可根据起始地址随机访问各元素。缺点:需事先分配一足够大空间,且插入删除结点需移动大量数据。
链式存储结构:关系采取链式映像表示,即借助附加信息指针显式表示元素间的关系,对应一个链表。优点是更有效利用空间、插入或者删除结点快,但要顺序访问各元素。
5.度量指标:算法运行时间主要取决于基本操作的执行次数(频度),执行次数通常随问题规模扩大而增加,增加越
快意味着算法随问题规模的扩大,运行时间增长的也快,从而该种算法效果较差;增长越慢算法越好,故可用基本操作的频度随问题规模的增长率反映算法的效率。
6.时间复杂度:频度函数的增长率基本与函数中“关键项”(去掉低次项和常数项)的增长率相同,故可用“关键项”
反映算法效率。假设关键项为f(n),用T(n)=O(f(n))表示算法时间增长率与f(n)增长率同阶。称O(f(n))为算法的渐近时间复杂度,简称时间复杂度。f(n)的增长率为f(n+1)/f(n),如对复杂度为O(n)的算法其运行时间随问题规模增长率为1+1/n,复杂度为O(1)的算法时间增长率为1。
数据结构必考知识点总结
数据结构必考知识点总结
在准备考试时,了解数据结构的基本概念和相关算法是非常重要的。以下是一些数据结构
的必考知识点总结:
1. 基本概念
数据结构的基本概念是非常重要的,包括数据、数据元素、数据项、数据对象、数据类型、抽象数据类型等的概念。了解这些概念有助于更好地理解数据结构的本质和作用。
2. 线性表
线性表是数据结构中最基本的一种,它包括顺序表和链表两种实现方式。顺序表是将数据
元素存放在一块连续的存储空间内,而链表是将数据元素存放在若干个节点中,每个节点
包含数据和指向下一个节点的指针。了解线性表的概念和基本操作是非常重要的。
3. 栈和队列
栈和队列是两种特殊的线性表,它们分别具有后进先出和先进先出的特性。栈和队列的实
现方式有多种,包括数组和链表。掌握栈和队列的基本操作和应用是数据结构的基本内容
之一。
4. 树结构
树是一种非线性的数据结构,它包括二叉树、多路树、二叉搜索树等多种形式。了解树的
基本定义和遍历算法是必考的知识点。
5. 图结构
图是一种非线性的数据结构,它包括有向图和无向图两种形式。了解图的基本概念和相关
算法是非常重要的,包括图的存储方式、遍历算法、最短路径算法等。
6. 排序算法
排序是一个非常重要的算法问题,掌握各种排序算法的原理和实现方式是必不可少的。常
见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。
7. 查找算法
查找是另一个重要的算法问题,包括顺序查找、二分查找、哈希查找、树查找等。了解各
种查找算法的原理和实现方式是必考的知识点之一。
8. 算法复杂度分析
算法的时间复杂度和空间复杂度是评价算法性能的重要指标,掌握复杂度分析的方法和技
数据结构知识点总结
数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。
数据结构的定义:
·逻辑结构:从逻辑结构上描述数据,独立于计算机。·线性结构:一对一关系。
·线性结构:多对多关系。
·存储结构:是逻辑结构用计算机语言的实现。·顺序存储结构:如数组。
·链式存储结构:如链表。
·索引存储结构:·稠密索引:每一个结点都有索引项。
·稀疏索引:每组结点都有索引项。
·散列存储结构:如散列表。
·数据运算。
·对数据的操作。定义在逻辑结构上,每种逻辑结构都有一个运算集合。
·常用的有:检索、插入、删除、更新、排序。
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
·原子类型:由语言提供。
·结构类型:由用户借助于描述机制定义,是导出类型。
抽象数据类型ADT:·是抽象数据的组织和与之的操作。相当于在概念层上描述问题。
·优点是将数据和操作封装在一起实现了信息隐藏。
程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。算法取决于数据结构。算法是一个良定义的计算过程,以一个或者多个值输入,并以一个或者多个值输出。
评价算法的好坏的因素:·算法是正确的;
·执行算法的时间;
·执行算法的存储空间(主要是辅助存储空间);
·算法易于理解、编码、调试。
时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n 的函数。
渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。
数据结构知识点总结归纳整理
第1章绪论
1.1 数据结构的基本概念
数据元是数据的基本单位,一个数据元素可由若干个数据项完成,数据项是构成数据元素的不可分割的最小单位。例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。
数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
数据类型是一个值的集合和定义在此集合上一组操作的总称。
•原子类型:其值不可再分的数据类型
•结构类型:其值可以再分解为若干成分(分量)的数据类型
•抽象数据类型:抽象数据组织和与之相关的操作
抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。通常用(数据对象、数据关系、基本操作集)这样的三元组来表示。
#关键词:数据,数据元素,数据对象,数据类型,数据结构
数据结构的三要素:
1.逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据,独立于计算机。
分为线性结构和非线性结构,线性表、栈、队列属于线性结构,树、图、集合属于非线性结构。
2.存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构,包括数据元
素的表示和关系的表示,依赖于计算机语言,分为顺序存储(随机存取)、链式存储(无碎片)、索引存储(检索速度快)、散列存储(检索、增加、删除快)。
3.数据的运算:包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的
功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。
1.2 算法和算法评价
算法是对特定问题求解步骤的一种描述,有五个特性:有穷性、确定性、可行性、输入、输出。一个算法有零个或多个的输入,有一个或多个的输出。
数据结构 知识点总结
数据结构知识点总结
一、数据结构基础概念
数据结构是指数据元素之间的关系,以及对数据元素进行操作的方法的总称。数据结构是计算机科学中非常基础的概念,它为计算机程序的设计和实现提供了基础架构。数据结构的研究内容包括数据的逻辑结构、数据的存储结构以及对数据进行操作的算法。
1.1 数据结构的分类
数据结构可以根据数据的逻辑关系和数据的物理存储方式进行分类,常见的数据结构分类包括线性结构、树形结构、图结构等。
1.2 数据结构的基本概念
(1)数据元素:数据结构中的基本单位,可以是原子类型或者复合类型。
(2)数据项:数据元素中的一个组成部分,通常是基本类型。
(3)数据结构的逻辑结构:指数据元素之间的逻辑关系,包括线性结构、树形结构、图结构等。
(4)数据结构的存储结构:指数据元素在计算机内存中的存储方式,包括顺序存储结构和链式存储结构等。
1.3 数据结构的特点
数据结构具有以下几个特点:
(1)抽象性:数据结构是对现实世界中的数据进行抽象和模型化的结果。
(2)实用性:数据结构是在解决实际问题中得出的经验总结,是具有广泛应用价值的。
(3)形式化:数据结构具有精确的数学定义和描述,可以进行分析和证明。
(4)计算性:数据结构是为了使计算机程序更加高效而存在的。
二、线性结构
线性结构是数据元素之间存在一对一的关系,是一种最简单的数据结构。常见的线性结构包括数组、链表、栈和队列等。
2.1 线性表
线性表是数据元素之间存在一对一的关系的数据结构,可以采用顺序存储结构或者链式存储结构实现。
(1)顺序存储结构:线性表采用数组的方式进行存储,数据元素在内存中连续存储。
数据结构知识点全面总结_精华版
数据结构知识点全面总结_精华版数据结构是计算机科学中的重要概念,它涉及到如何有效地存储和
组织数据,以便于程序的操作和管理。在本文中,我将全面总结数据
结构的核心知识点,以帮助读者深入理解和掌握这一领域的基础概念
和算法。
一、线性结构
1. 数组(Array)
数组是一种线性结构,它由相同类型的元素组成,通过索引访问。数组的特点是随机访问快,但插入和删除操作较慢。
2. 链表(LinkedList)
链表由一系列节点组成,每个节点包含数据和指向下一个节点的
指针。链表的特点是插入和删除操作快,但访问元素需要遍历整个链表。
3. 栈(Stack)
栈是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入
和删除操作。栈的应用场景包括表达式求值、函数调用和递归等。
4. 队列(Queue)
队列是一种先进先出(FIFO)的数据结构,只允许在队尾插入元素,在队头删除元素。队列的应用场景包括任务调度和缓冲区管理等。
二、树形结构
1. 二叉树(Binary Tree)
二叉树是一种每个节点最多只有两个子节点的树形结构,它可以
为空树。二叉树的遍历方式包括前序、中序和后序遍历。
2. 堆(Heap)
堆是一种完全二叉树,其中每个节点的值都大于等于(或小于等于)其子节点的值。堆常用于实现优先队列和排序算法。
3. 平衡二叉树(Balanced Binary Tree)
平衡二叉树是一种高度平衡的二叉树,它的左右子树的高度差不
超过1。平衡二叉树的例子包括AVL树和红黑树。
4. B树(B-Tree)
B树是一种多路搜索树,它在一个节点中可以存储多个元素。B
数据结构基本知识点
第一章
1、什么是数据结构
①数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。
②数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
③4类基本结构:⑴集合;⑵线性(一个前驱,一个后继)结构;⑶树形结构;
⑷图状结构或网状结构。
2、数据结构的二元组表示:Data_Structure=(D,S)//D是数据元素的有限集,S是D上关系的有限集。
3、算法的5大特性:⑴有穷性;
4、衡量算法的标准:时间复杂度和空间复杂度
5、数据的逻辑结构分四类
6、数据结构写出逻辑结构,反之。
第二章
0、线性表的基本概念。
1、线性表的顺序存储的基本操作:Insert, E Is=n/2 Delete. E dl=(n-1)/2
2、线性表的顺序存储的特点:连续地址,随机查找。
3、线性表的链式存储的特点:地址不保证连续,顺序查找。
(1)重点1:结构类型P28
Typedef struct LNode{
ElemType data;
Struct LNode *next;
}LNode,*LinkList;
(2)重点2:基本方法
Status GetElem_L(LinkList L,int i,ElemType &e); Status ListInsert_L(LinkList &L,int i,ElemType e); Status ListDelete_L(LinkList &L,int i,ElemType &e); void CreateList_L(LinkList &L,int n);
(完整word版)大学数据结构期末知识点重点总结(考试专用)
第一章概论
1。数据结构描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、存储结构和运算
2。数据的逻辑结构是从具体问题抽象出来的数学模型,反映了事物的组成结构及事物之间的逻辑关系
可以用一组数据(结点集合K)以及这些数据之间的一组二元关系(关系集合R)来表示:(K, R)
结点集K是由有限个结点组成的集合,每一个结点代表一个数据或一组有明确结构的数据
关系集R是定义在集合K上的一组关系,其中每个关系r(r∈R)都是K×K上的二元关系
3.数据类型
a。基本数据类型
整数类型(integer)、实数类型(real)、布尔类型(boolean)、字符类型(char)、指针类型(pointer)b。复合数据类型
复合类型是由基本数据类型组合而成的数据类型;复合数据类型本身,又可参与定义结构更为复杂的结点类型
4.数据结构的分类:线性结构(一对一)、树型结构(一对多)、图结构(多对多)
5。四种基本存储映射方法:顺序、链接、索引、散列
6。算法的特性:通用性、有效性、确定性、有穷性
7.算法分析:目的是从解决同一个问题的不同算法中选择比较适合的一种,或者对原始算法进行改造、加工、使其优化
8.渐进算法分析
a.大Ο分析法:上限,表明最坏情况
b.Ω分析法:下限,表明最好情况
c.Θ分析法:当上限和下限相同时,表明平均情况
第二章线性表
1.线性结构的基本特征
a.集合中必存在唯一的一个“第一元素”
b。集合中必存在唯一的一个“最后元素"
c.除最后元素之外,均有唯一的后继
d。除第一元素之外,均有唯一的前驱
(完整版)数据结构知识点总结
数据结构知识点概括
第一章概论
数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。
数据结构的定义:
·逻辑结构:从逻辑结构上描述数据,独立于计算机。·线性结构:一对一关系。
·线性结构:多对多关系。
·存储结构:是逻辑结构用计算机语言的实现。·顺序存储结构:如数组。
·链式存储结构:如链表。
·索引存储结构:·稠密索引:每个结点都有索引项。
·稀疏索引:每组结点都有索引项。
·散列存储结构:如散列表。
·数据运算。
·对数据的操作。定义在逻辑结构上,每种逻辑结构都有一个运算集合。
·常用的有:检索、插入、删除、更新、排序。
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
·结构类型:由用户借助于描述机制定义,是导出类型。
抽象数据类型ADT:·是抽象数据的组织和与之的操作。相当于在概念层上描述问题。
·优点是将数据和操作封装在一起实现了信息隐藏。
程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。算法取决于数据结构。
算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。
评价算法的好坏的因素:·算法是正确的;
·执行算法的时间;
·执行算法的存储空间(主要是辅助存储空间);
·算法易于理解、编码、调试。
时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。
渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。
数据结构知识点笔记
数据结构知识点笔记
一、数据结构的概念
数据结构是计算机科学中一门重要的学科,它研究如何组织和存储数据,以便高效地访问和操作。数据结构可以分为物理结构和逻辑结构两个层次。物理结构指数据在计算机内存中的存储方式,而逻辑结构则指数据之间的逻辑关系。
二、常用的数据结构
1. 数组(Array)
数组是最基本的数据结构之一,它以连续的存储空间来保存相同类型的数据。数组的特点是可以通过下标快速访问元素,但插入和删除操作较慢。
2. 链表(Linked List)
链表是一种动态数据结构,它通过指针将一组节点串联起来。链表的特点是插入和删除操作效率高,但访问元素需要遍历整个链表。
3. 栈(Stack)
栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。栈主要用于函数调用和表达式求值等场景。
4. 队列(Queue)
队列是一种先进先出(FIFO)的数据结构,只能在队列的一端进行插入操作,在另一端进行删除操作。队列主要用于任务调度和缓冲区管理等场景。
5. 树(Tree)
树是一种非线性的数据结构,由父节点和子节点组成。树常用于组织和管理具有层级关系的数据,如文件系统和数据库索引等。
6. 图(Graph)
图是一种由节点和边组成的数据结构,节点表示数据,边表示节点之间的关系。图广泛应用于网络分析和路径搜索等领域。
三、常见的数据结构操作
1. 插入(Insert)
插入操作将新的数据元素加入到数据结构中的特定位置。不同的数据结构插入操作的复杂度各不相同,需要根据具体情况选择合适的数据结构。
2. 删除(Delete)
数据结构基础知识总结详细带图
数据结构【基础知识点总结】
一、数据
数据(Data)是信息的载体,它能够被计算机识别、存储和加工处理。它是计算机程序加工的原料,应用程序处理各种各样的数据。
计算机科学中,所谓数据就是计算机加工处理的对象,它可以是数值数据,也可以是非数值数据。数值数据是一些整数、实数或复数,主要用于工程计算、科学计算和商务处理等;
非数值数据包括字符、文字、图形、图像、语音等。
二、数据元素
复制代码
数据元素(Data Element)是数据的基本单位。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。例如,学生信息检索系统中学生信息表中的一个记录、八皇后问题中状态树的一个状态、教学计划编排问题中的一个顶点等,都被称为一个数据元素。
有时,一个数据元素可由若干个数据项(Data Item)组成,例如,学籍管理系统中学生信息表的每一个数据元素就是一个学生记录。它包括学生的学号、姓名、性别、籍贯、出生年月、成绩等数据项。
这些数据项可以分为两种:
一种叫做初等项,如学生的性别、籍贯等,这些数据项是在数据处理时不能再分割的最小单位;
另一种叫做组合项,如学生的成绩,它可以再划分为数学、物理、化学等更小的项。通常,在解决实际应用问题时是把每个学生记录当作一个基本单位进行访问和处理的。
复制代码
三、数据对象
数据对象(Data Object)或数据元素类(Data Element Class)是具有相同性质的数据元素的集合。
在某个具体问题中,数据元素都具有相同的性质(元素值不一定相等),属于同一数据对象(数据元素类),数据元素是数据元素类的一个实例。例如,在交通咨询系统的交通网中,所有的顶点是一个数据元素类,顶点A 和顶点B 各自代表一个城市,是该数据元素类中的两个实例,其数据元素的值分别为A 和B。
理工类专业课复习资料-数据结构知识点全面总结—精华版
第1章绪论
内容提要:
◆数据结构研究的内容。
针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。
数据结构涵盖的内容:
◆基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型。
数据——所有能被计算机识别、存储和处理的符号的集合。
数据元素——是数据的基本单位,具有完整确定的实际意义。
数据对象——具有相同性质的数据元素的集合,是数据的一个子集。
数据结构——是相互之间存在一种或多种特定关系的数据元素的集合,表示为:
Data_Structure=(D, R)
数据类型——是一个值的集合和定义在该值上的一组操作的总称。
抽象数据类型——由用户定义的一个数学模型与定义在该模型上的一组操作,
它由基本的数据类型构成。
◆算法的定义及五个特征。
算法——是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
算法的基本特性:输入、输出、有穷性、确定性、可行性
◆算法设计要求。
①正确性、②可读性、③健壮性、④效率与低存储量需求
◆算法分析。
时间复杂度、空间复杂度、稳定性
学习重点:
◆数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操作(运算)。
◆用计算语句频度来估算算法的时间复杂度。
第二章线性表
内容提要:
◆线性表的逻辑结构定义,对线性表定义的操作。
线性表的定义:用数据元素的有限序列表示
◆线性表的存储结构:顺序存储结构和链式存储结构。
顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。
链式存储结构: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。通过指针来实现!
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构知识点概括
第一章概论
数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。
数据结构的定义:
·逻辑结构:从逻辑结构上描述数据,独立于计算机。·线性结构:一对一关系。
·线性结构:多对多关系。
·存储结构:是逻辑结构用计算机语言的实现。·顺序存储结构:如数组。
·链式存储结构:如链表。
·索引存储结构:·稠密索引:每个结点都有索引项。
·稀疏索引:每组结点都有索引项。
·散列存储结构:如散列表。
·数据运算。
·对数据的操作。定义在逻辑结构上,每种逻辑结构都有一个运算集合。
·常用的有:检索、插入、删除、更新、排序。
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
·结构类型:由用户借助于描述机制定义,是导出类型。
抽象数据类型ADT:·是抽象数据的组织和与之的操作。相当于在概念层上描述问题。
·优点是将数据和操作封装在一起实现了信息隐藏。
程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。算法取决于数据结构。
算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。
评价算法的好坏的因素:·算法是正确的;
·执行算法的时间;
·执行算法的存储空间(主要是辅助存储空间);
·算法易于理解、编码、调试。
时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。
渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。
算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。
时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O (n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。
算法的时间复杂度和空间复杂度合称算法复杂度。
第二章线性表
线性表是由n≥0个数据元素组成的有限序列。
n=0是空表;非空表,只能有一个开始结点,有且只能有一个终端结点。
线性表上定义的基本运算:
·构造空表:Initlist(L)
·求表长:Listlength(L)
·取结点:GetNode(L,i)
·查找:LocateNode(L,x)
·插入:InsertList(L,x,i)
·删除:Delete(L,i)
顺序表是按线性表的逻辑结构次序依次存放在一组地址连续的存储单元中。在存储单元中的各元素的物理位置和
逻辑结构中各结点相邻关系是一致的。地址计算:LOCa(i)=LOCa(1)+(i-1)*d;(首地址为1)
在顺序表中实现的基本运算:
·插入:平均移动结点次数为n/2;平均时间复杂度均为O(n)。
·删除:平均移动结点次数为(n-1)/2;平均时间复杂度均为O(n)。
线性表的链式存储结构中结点的逻辑次序和物理次序不一定相同,为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还存储了其后继结点的地址信息(即指针或链)。这两部分信息组成链表中的结点结构。
一个单链表由头指针的名字来命名。
单链表运算:
·建立单链表·头插法:s->next=head;head=s;生成的顺序与输入顺序相反。平均时间复杂度均为O(n)。
·尾插法:head=rear=null;if(head=null)head=s;else r->next=s;r=s;平均时间复杂度均为O(n)·加头结点的算法:对开始结点的操作无需特殊处理,统一了空表和非空表。
·查找·按序号:与查找位置有关,平均时间复杂度均为O(n)。
·按值:与输入实例有关,平均时间复杂度均为O(n)。
·插入运算:p=GetNode(L,i-1);s->next=p->next;p->next=s;平均时间复杂度均为O(n)
·删除运算:p=GetNode(L,i-1);r=p->next;p->next=r->next;free(r);平均时间复杂度均为O(n)
单循环链表是一种首尾相接的单链表,终端结点的指针域指向开始结点或头结点。链表终止条件是以指针等于头指针或尾指针。
采用单循环链表在实用中多采用尾指针表示单循环链表。优点是查找头指针和尾指针的时间都是O(1),不用
遍历整个链表。
双链表就是双向链表,就是在单链表的每个结点里再增加一个指向其直接前趋的指针域prior,形成两条不同方
向的链。由头指针head惟一确定。
双链表也可以头尾相链接构成双(向)循环链表。
双链表上的插入和删除时间复杂度均为O (1)。
顺序表和链表的比较:·基于空间:
·顺序表的存储空间是静态分配,存储密度为1;适于线性表事先确定其大小时采用。
·链表的存储空间是动态分配,存储密度<1;适于线性表长度变化大时采用。
·基于时间:
·顺序表是随机存储结构,当线性表的操作主要是查找时,宜采用。
·以插入和删除操作为主的线性表宜采用链表做存储结构。
·若插入和删除主要发生在表的首尾两端,则宜采用尾指针表示的单循环链表。
第三章栈和队列
栈(Stack)是仅限制在表的一端进行插入和删除运算的线性表,称插入、删除这一端为栈顶,另一端称为栈底。表中无元素时为空栈。栈的修改是按后进先出的原则进行的,我们又称栈为LIFO表(Last In First Out)。通常栈有
顺序栈和链栈两种存储结构。
栈的基本运算有六种:·构造空栈:InitStack(S)
·判栈空:StackEmpty(S)
·判栈满:StackFull(S)
·进栈:Push(S,x)
·退栈:Pop(S)
·取栈顶元素:StackTop(S)
在顺序栈中有“上溢”和“下溢”的现象。·“上溢”是栈顶指针指出栈的外面是出错状态。
·“下溢”可以表示栈为空栈,因此用来作为控制转移的条件。
顺序栈中的基本操作有六种:·构造空栈·判栈空·判栈满·进栈·退栈·取栈顶元素
链栈则没有上溢的限制,因此进栈不要判栈满。链栈不需要在头部附加头结点,只要有链表的头指针就可以了。
链栈中的基本操作有五种:·构造空栈·判栈空·进栈·退栈·取栈顶元素
队列(Queue)是一种运算受限的线性表,插入在表的一端进行,而删除在表的另一端进行,允许删除的一端称
为队头(front),允许插入的一端称为队尾(rear),队列的操作原则是先进先出的,又称作FIFO表(First In
First Out) .队列也有顺序存储和链式存储两种存储结构。
队列的基本运算有六种:·置空队:InitQueue(Q)
·判队空:QueueEmpty(Q)
·判队满:QueueFull(Q)