数据结构基础知识总结详细带图

合集下载

数据结构基础知识

数据结构基础知识

复习提纲第一章数据构造概述根本概念与术语〔P3〕1.数据构造是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2.数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2.数据元素是数据的根本单位3.数据对象一样性质的数据元素的集合4.数据构造三方面容:数据的逻辑构造.数据的存储构造.数据的操作.〔1〕数据的逻辑构造指数据元素之间固有的逻辑关系.〔2〕数据的存储构造指数据元素及其关系在计算机的表示( 3 ) 数据的操作指在数据逻辑构造上定义的操作算法,如插入,删除等.5.时间复杂度分析--------------------------------------------------------------------------------------------------------------------1、名词解释:数据构造、二元组2、根据数据元素之间关系的不同,数据的逻辑构造可以分为集合、线性构造、树形构造和图状构造四种类型。

3、常见的数据存储构造一般有四种类型,它们分别是___顺序存储构造_____、___链式存储构造_____、___索引存储构造_____和___散列存储构造_____。

4、以下程序段的时间复杂度为___O(N2)_____。

int i,j,*;for(i=0;i<n:i++) n+1for(j=0;j<n;j++) n+1*+=i;------------------------------------------------------------------------------------------------------------------第二章线性表1.顺序表构造由n(n>=0)个具有一样性质的数据元素a1,a2,a3……,an组成的有穷序列//顺序表构造#define MA*SIZE 100typedef int DataType;Typedef struct{DataType items[MA*SIZE];Int length;}Sqlist,*LinkList;2.单链表(1)链表结点构造//链表的节点构造Typedef struct Node{int data;struct Node *ne*t;} Lnode,*Pnode,*LinkList;(2)结点遍历void TraverseList(LinkList t){LinkList p;while(t){p=t;t=t->ne*tfree(p);}}(3)链表操作算法:初始化、插入、输出、删除void InitList(LinkList *h){*h=(LinkList)malloc(sizeof(LNode));if(!h){print("初始化错误〞);return;}(*h)->ne*t=NULL;}void InsertList(LinkList h,int pos,datatype *){ LinkList p=h,q;int i=0;while(p&&i<pos-1){p=p->ne*t;i++;}if(!p||i>pos-1)print("插入位置出错!!〞);InitList(&q);q->ne*t=NULL;q->data=*;}void DeleteList(LinkList h,int pos){LinkList p=h,q;int i=0;while(p&&i<pos-1){p=p->ne*t;i++;}if(!p||i>pos-1){cout<<〞删除位置错误〞;return;}q=p->ne*t;p->ne*t=q->ne*t;free(q);}-----------------------------------------------------------------------------------------------------------------1、线性表中,第一个元素没有直接前驱,最后一个元素没有直接后驱。

(完整版)数据结构知识点总结

(完整版)数据结构知识点总结

数据结构知识点概括第一章概论数据就是指能够被计算机识别、存储和加工处理的信息的载体。

数据元素是数据的基本单位,可以由若干个数据项组成。

数据项是具有独立含义的最小标识单位。

数据结构的定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机。

·线性结构:一对一关系。

·线性结构:多对多关系。

·存储结构:是逻辑结构用计算机语言的实现。

·顺序存储结构:如数组。

·链式存储结构:如链表。

·索引存储结构:·稠密索引:每个结点都有索引项。

·稀疏索引:每组结点都有索引项。

·散列存储结构:如散列表。

·数据运算。

·对数据的操作。

定义在逻辑结构上,每种逻辑结构都有一个运算集合。

·常用的有:检索、插入、删除、更新、排序。

数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。

·结构类型:由用户借助于描述机制定义,是导出类型。

抽象数据类型ADT:·是抽象数据的组织和与之的操作。

相当于在概念层上描述问题。

·优点是将数据和操作封装在一起实现了信息隐藏。

程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。

算法取决于数据结构。

算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。

评价算法的好坏的因素:·算法是正确的;·执行算法的时间;·执行算法的存储空间(主要是辅助存储空间);·算法易于理解、编码、调试。

时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。

渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。

评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。

算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。

时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

(完整版)数据结构知识点全面总结—精华版

(完整版)数据结构知识点全面总结—精华版

第1章绪论内容提要:◆数据结构研究的内容。

针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。

数据结构涵盖的内容:◆基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型。

数据——所有能被计算机识别、存储和处理的符号的集合。

数据元素——是数据的基本单位,具有完整确定的实际意义。

数据对象——具有相同性质的数据元素的集合,是数据的一个子集。

数据结构——是相互之间存在一种或多种特定关系的数据元素的集合,表示为:Data_Structure=(D, R)数据类型——是一个值的集合和定义在该值上的一组操作的总称。

抽象数据类型——由用户定义的一个数学模型与定义在该模型上的一组操作,它由基本的数据类型构成。

◆算法的定义及五个特征。

算法——是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。

算法的基本特性:输入、输出、有穷性、确定性、可行性◆算法设计要求。

①正确性、②可读性、③健壮性、④效率与低存储量需求◆算法分析。

时间复杂度、空间复杂度、稳定性学习重点:◆数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操作(运算)。

◆用计算语句频度来估算算法的时间复杂度。

第二章线性表内容提要:◆线性表的逻辑结构定义,对线性表定义的操作。

线性表的定义:用数据元素的有限序列表示◆线性表的存储结构:顺序存储结构和链式存储结构。

顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。

链式存储结构: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。

通过指针来实现!◆线性表的操作在两种存储结构中的实现。

数据结构的基本运算:修改、插入、删除、查找、排序1)修改——通过数组的下标便可访问某个特定元素并修改之。

核心语句:V[i]=x;顺序表修改操作的时间效率是O(1)2) 插入——在线性表的第i个位置前插入一个元素实现步骤:①将第n至第i 位的元素向后移动一个位置;②将要插入的元素写到第i个位置;③表长加1。

数据结构总结知识点

数据结构总结知识点

第一章数据结构概念——数据结构,数据元素,数据项,数据类型,抽象数据类型,算法,等。

数据结构定义——指互相有关联的数据元素的集合,用D_S=( D, S ) 或S=( D, R) 表示。

数据结构内容——数据的逻辑结构、存储结构和运算算法效率指标——时间效率(时间复杂度)和空间效率(空间复杂度)总结:数据的逻辑结构和存储结构数据的逻辑结构是数据的机外表示,数据的存储结构是数据的机内表示。

(2) 一种数据的逻辑结构可以用多种存储结构来存储。

(3) 数据结构的基本操作是定义(存在)于逻辑结构,计算机程序设计过程中实现于存储结构。

(4) 采用不同的存储结构,其数据处理的效率往往是不同的。

数据结构?有限个同构数据元素的集合,存在着一定的结构关系,可进行一定的运算。

算法--是对特定问题求解步骤的一种描述,是指令的有限序列。

算法有5个基本特性:有穷性、确定性、可行性、输入和输出第二章1. 数据的逻辑结构是指数据元素之间的逻辑关系,是用户按使用需要建立的。

对2. 线性表的逻辑结构定义是唯一的,不依赖于计算机。

对3. 线性结构反映结点间的逻辑关系是一对一的。

对4. 一维向量是线性表,但二维或N维数组不是。

错5. “同一数据逻辑结构中的所有数据元素都具有相同的 特性”是指数据元素所包含的数据项的个数都相等。

错 插入概率p(i)=1/(n+1) ,删除概率q(i)=1/n插入操作时间效率(平均移动次数)2)1(11)1(1111ni n n i n p E n i n i i is =+-+=+-=∑∑+=+=删除操作时间效率(平均移动次数)21)(1)(11-=-=-=∑∑==n i n n i n q E ni n i i dl 线性表顺序存储结构特点:逻辑关系上相邻的两个元素在物理存储位置上也相邻; 优点:可以随机存取表中任一元素;无需为表示表中元素 之间的逻辑关系而增加额外的存储空间;缺点:在插入、删除某一元素时,需要移动大量元素;表的容量难以确定,表的容量难以扩充。

数据结构知识点总结

数据结构知识点总结

12 20
6 6*
8 12*
8 12*
24
6 6*
6 6*
24
24
第七章 图
理解和掌握
图的基本概念 图的存储表示 图的遍历 最小生成树 拓扑排序
需要掌握的知识点
图的基本概念 顶点的度、完全图、生成树。 无向图顶点度的和等于边数的2倍。 有向图顶点的度等于入度+出度。 无向连通图最大边数n(n-1)/2, 最少 边数n-1(生成树)。 有向强连通图最大边数n(n-1), 最少 边数n, (特例, n=1时最少边数0) 。
有序单链表插入与删除算法。 有序单链表建立算法及性能分析。
循环链表
链表最后一个结点的链接指针指示 表头结点。只要知道任一结点地址 就能遍历其他所有结点。
若操作仅在链表两头, 可仅给出链尾 指针, 它的下一结点即链头 。
对于需要循环操作的线性表, 可用循环 链表存储,例如链式队列的实现。
码长度)的计算。 构造霍夫曼树时权大的离根最近,权
小的离根最远。 根的权值相同时,新构造出来的树的
根一般位于右边。但若用“堆”存储 各树的根结点,则要看它们在堆中调 整的结果来定哪一个做左子树。
例:12,8,2,6,4
12 8 2 6 4
12 8 6 6*
24
32
12 8 12*
12 20
ASL 1 n n i n1 i1
有序表的折半搜索 折半搜索的过程 折半搜索的平均搜索长度
搜索成功时的平均搜索长度ASL
AS n 1 Li n1C i n 1i n1lo2ig1
元素的最大比较次数为 log2(n+1) 在区间[low, high]中取中点

数据结构知识点总结归纳整理

数据结构知识点总结归纳整理

第1章绪论1.1 数据结构的基本概念数据元是数据的基本单位,一个数据元素可由若干个数据项完成,数据项是构成数据元素的不可分割的最小单位。

例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。

数据对象是具有相同性质的数据元素的集合,是数据的一个子集。

数据类型是一个值的集合和定义在此集合上一组操作的总称。

•原子类型:其值不可再分的数据类型•结构类型:其值可以再分解为若干成分(分量)的数据类型•抽象数据类型:抽象数据组织和与之相关的操作抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作。

抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。

通常用(数据对象、数据关系、基本操作集)这样的三元组来表示。

#关键词:数据,数据元素,数据对象,数据类型,数据结构数据结构的三要素:1.逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据,独立于计算机。

分为线性结构和非线性结构,线性表、栈、队列属于线性结构,树、图、集合属于非线性结构。

2.存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构,包括数据元素的表示和关系的表示,依赖于计算机语言,分为顺序存储(随机存取)、链式存储(无碎片)、索引存储(检索速度快)、散列存储(检索、增加、删除快)。

3.数据的运算:包括运算的定义和实现。

运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。

1.2 算法和算法评价算法是对特定问题求解步骤的一种描述,有五个特性:有穷性、确定性、可行性、输入、输出。

一个算法有零个或多个的输入,有一个或多个的输出。

时间复杂度是指该语句在算法中被重复执行的次数,不仅依赖于问题的规模n,也取决于待输入数据的性质。

一般指最坏情况下的时间复杂度。

空间复杂度定义为该算法所耗费的存储空间。

算法原地工作是指算法所需辅助空间是常量,即O(1)。

第2章线性表2.1 线性表的定义和基本操作线性表是具有相同数据类型的n个数据元素的有限序列。

数据结构 知识点总结

数据结构知识点总结一、数据结构基础概念数据结构是指数据元素之间的关系,以及对数据元素进行操作的方法的总称。

数据结构是计算机科学中非常基础的概念,它为计算机程序的设计和实现提供了基础架构。

数据结构的研究内容包括数据的逻辑结构、数据的存储结构以及对数据进行操作的算法。

1.1 数据结构的分类数据结构可以根据数据的逻辑关系和数据的物理存储方式进行分类,常见的数据结构分类包括线性结构、树形结构、图结构等。

1.2 数据结构的基本概念(1)数据元素:数据结构中的基本单位,可以是原子类型或者复合类型。

(2)数据项:数据元素中的一个组成部分,通常是基本类型。

(3)数据结构的逻辑结构:指数据元素之间的逻辑关系,包括线性结构、树形结构、图结构等。

(4)数据结构的存储结构:指数据元素在计算机内存中的存储方式,包括顺序存储结构和链式存储结构等。

1.3 数据结构的特点数据结构具有以下几个特点:(1)抽象性:数据结构是对现实世界中的数据进行抽象和模型化的结果。

(2)实用性:数据结构是在解决实际问题中得出的经验总结,是具有广泛应用价值的。

(3)形式化:数据结构具有精确的数学定义和描述,可以进行分析和证明。

(4)计算性:数据结构是为了使计算机程序更加高效而存在的。

二、线性结构线性结构是数据元素之间存在一对一的关系,是一种最简单的数据结构。

常见的线性结构包括数组、链表、栈和队列等。

2.1 线性表线性表是数据元素之间存在一对一的关系的数据结构,可以采用顺序存储结构或者链式存储结构实现。

(1)顺序存储结构:线性表采用数组的方式进行存储,数据元素在内存中连续存储。

(2)链式存储结构:线性表采用链表的方式进行存储,数据元素在内存中非连续存储,通过指针将它们进行连接。

2.2 栈栈是一种特殊的线性表,只允许在一端进行插入和删除操作,这一端称为栈顶。

栈的操作遵循后进先出(LIFO)的原则。

2.3 队列队列也是一种特殊的线性表,允许在一端进行插入操作,另一端进行删除操作,这两端分别称为队尾和队首。

(完整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。

除第一元素之外,均有唯一的前驱2.线性结构的基本特点:均匀性、有序性3。

顺序表a.主要特性:元素的类型相同;元素顺序地存储在连续存储空间中,每一个元素唯一的索引值;使用常数作为向量长度b。

线性表中任意元素的存储位置:Loc(ki)= Loc(k0)+ i * L(设每个元素需占用L个存储单元)c. 线性表的优缺点:优点:逻辑结构与存储结构一致;属于随机存取方式,即查找每个元素所花时间基本一样缺点:空间难以扩充d.检索:ASL=【Ο(1)】e。

《数据结构之图》相关知识点总结

第5章图●图的定义①图由顶点集V和边集E组成,记为G=(V,E),V(G)是图G中顶点的有穷非空集合,E(G)是图G中顶点之间变得关系集合,|V|表示顶点个数,也称图的阶,|E|表示边数(线性表和树都可以是空的,但图可以只有一个顶点没有边)②有向图:弧是顶点的有序对,记为<v,w>,v,w是顶点,v是弧尾,w是弧头,从顶点v到顶点w的弧。

无向图:边是顶点的无序对,记为(v,w)③简单图:一个图满足:不存在重复边;不存在顶点到自身的边。

多重图相对于简单图定义④完全图:无向图中,任意两顶点之间存在边,称为完全无向图。

N个顶点的无向完全图有n(n-1)/2条边。

在有向图中,任意两顶点之间存在方向相反的两条弧,称为有向完全图,N 个顶点的有向完全图有n(n-1)条边。

⑤连通图:在无向图中任意两顶点都是连通的。

无向图中的极大连通子图称为连通分量。

极大要求连通子图包含其所有的边和顶点,极小连通子图既要保持图连通,又要保持边数最少⑥在有向图中任意两顶点v,w,存在从顶点v到顶点w和从顶点w到顶点v两条路径,这种图称为强连通图。

有向图的极大强连通子图称为有向图的强连通分量。

⑦生成树:①包含图中所有顶点n,②生成树有n-1条边, ③任意两点连通。

对生成树而言,砍去一条边变成非连通图,加上一条边形成一个回路。

在非连通图中,连通分量的生成树构成了非连通图的生成森林。

⑧顶点的度:以该顶点为端点的边的数目。

无向图的全部顶点的度之和等于边数的两倍。

有向图的度等于出度和入度之和,入度是以该顶点为终点的有向边的数目,出度是以该顶点为起点的有向边的数目。

有向图的全部顶点的入度之和和出度之和相等且等于边数。

⑨图中每条边可以标上具有某种含义的数值,该数值称为边的权值。

带有权值的图称为网。

○10对于无向图G=(V, {E}),如果边(v,v’)∈E,则称顶点v,v’互为邻接点,即v,v’相邻接。

边(v,v’)依附于顶点v 和v’,或者说边(v, v’)与顶点v 和v’相关联。

《数据结构与算法 》课件

自然语言处理
自然语言处理中,数据结构用于表示句子、单词之间的关系,如依 存句法树。
计算机视觉
计算机视觉中的图像处理和识别使用数据结构来存储和操作图像信 息,如链表和二叉树。
算法在计算机科学中的应用
加密算法
加密算法用于保护数据的机密性和完整性,如 RSA算法用于公钥加密。
排序算法
排序算法用于对数据进行排序,如快速排序和归 并排序广泛应用于数据库和搜索引擎中。
归并排序
将两个或两个以上的有序表组合成一个新的有序表。
查找算法
线性查找:从数据结构的一端开始逐 个检查每个元素,直到找到所查找的 元素或检查完所有元素为止。
二分查找:在有序数据结构中查找某 一特定元素,从中间开始比较,如果 中间元素正好是要查找的元素,则搜 索过程结束;如果某一特定元素大于 或者小于中间元素,则在数组大于或 小于中间元素的那一半中查找,而且 跟开始一样从中间元素开始比较。如 果在某一步骤数组为空,则代表找不 到。这种搜索算法每一次比较都使搜 索范围缩小一半。
04
常见算法实现
排序算法
冒泡排序
通过重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复 地进行直到没有再需要交换,也就是说该数列已经排序完成。
快速排序
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,然后再按 此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
数据结构在计算机科学中的应用
1 2
数据库系统
数据结构是数据库系统的基础,用于存储、检索 和管理大量数据。例如,B树和哈希表在数据库 索引中广泛应用。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构【基础知识点总结】一、数据数据(Data)是信息的载体,它能够被计算机识别、存储和加工处理。

它是计算机程序加工的原料,应用程序处理各种各样的数据。

计算机科学中,所谓数据就是计算机加工处理的对象,它可以是数值数据,也可以是非数值数据。

数值数据是一些整数、实数或复数,主要用于工程计算、科学计算和商务处理等;非数值数据包括字符、文字、图形、图像、语音等。

二、数据元素复制代码数据元素(Data Element)是数据的基本单位。

在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。

例如,学生信息检索系统中学生信息表中的一个记录、八皇后问题中状态树的一个状态、教学计划编排问题中的一个顶点等,都被称为一个数据元素。

有时,一个数据元素可由若干个数据项(Data Item)组成,例如,学籍管理系统中学生信息表的每一个数据元素就是一个学生记录。

它包括学生的学号、姓名、性别、籍贯、出生年月、成绩等数据项。

这些数据项可以分为两种:一种叫做初等项,如学生的性别、籍贯等,这些数据项是在数据处理时不能再分割的最小单位;另一种叫做组合项,如学生的成绩,它可以再划分为数学、物理、化学等更小的项。

通常,在解决实际应用问题时是把每个学生记录当作一个基本单位进行访问和处理的。

复制代码三、数据对象数据对象(Data Object)或数据元素类(Data Element Class)是具有相同性质的数据元素的集合。

在某个具体问题中,数据元素都具有相同的性质(元素值不一定相等),属于同一数据对象(数据元素类),数据元素是数据元素类的一个实例。

例如,在交通咨询系统的交通网中,所有的顶点是一个数据元素类,顶点A 和顶点B 各自代表一个城市,是该数据元素类中的两个实例,其数据元素的值分别为A 和B。

四、数据结构复制代码数据结构研究的三个方面:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。

数据结构是指相互有关联的数据元素的集合。

数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。

数据的存储结构有顺序、链接、索引等。

线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。

非线性结构:不满足线性结构条件的数据结构。

复制代码五、数据的逻辑结构线性表是一个典型的线性结构。

栈、队列、串、数组等都是线性结构。

非线性结构:在该类结构中至少存在一个数据元素,它具有两个或者两个以上的前驱或后继。

如树和二叉树集合结构和多维数组、广义表、图、堆等数据结构都是非线性结构。

六、基本的数据结构复制代码集合结构:数据元素的有限集合。

数据元素之间除了“属于同一个集合”的关系之外没有其他关系。

线性结构:数据元素的有序集合。

数据元素之间形成一对一的关系。

树型结构:树是层次数据结构,树中数据元素之间存在一对多的关系。

图状结构:图中数据元素之间的关系是多对多的。

复制代码七、数据的存储结构复制代码数据的存储结构可采用顺序存储或链式存储的方法。

顺序存储方法是把逻辑上相邻的元素存储在物理位置相邻的存储单元中,由此得到的存储表示称为顺序存储结构。

顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。

链式存储方法对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过附设的指针字段来表示,由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。

除了通常采用的顺序存储方法和链式存储方法外,有时为了查找的方便还采用索引存储方法和散列存储方法。

复制代码算法:是指解题方案的准确而完整的描述。

算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。

算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。

特征包括:(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义;(4)拥有足够的情报。

算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。

指令系统:一个计算机系统能执行的所有指令的集合。

基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。

算法的控制结构:顺序结构、选择结构、循环结构。

算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。

算法复杂度:算法时间复杂度和算法空间复杂度。

算法时间复杂度是指执行算法所需要的计算工作量。

算法空间复杂度是指执行这个算法所需要的内存空间。

复制代码时间复杂度定义:设问题的规模为n,把一个算法的时间耗费T(n)称为该算法的时间复杂度,它是问题规模为n的函数。

常用的算法的时间复杂度的顺序:(比较时只看最高次幂)复制代码for ( i = 1 , i < = 10 , i++ ) x=x+c;=>O(1)for ( i = 1 , i < = n , i++ ) x=x+n;=>O(n)多嵌套一个for,则为=>O(n^2) 以此类推真题难点:i = 1,while(i < = n)i = i * 3;=>O(log3^n)i = i * 2;=>O(log2^n) 以此类推复制代码九、线性表在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。

非空线性表的结构特征:(1)且只有一个根结点a1,它无前件;(2)有且只有一个终端结点an,它无后件;(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。

结点个数n称为线性表的长度,当n=0时,称为空表。

线性表的顺序存储结构具有以下两个基本特点:(1)线性表中所有元素的所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

ai的存储地址为:adr(ai)=adr(a1)+(i-1)k,,adr(a1)为第一个元素的地址,k代表每个元素占的字节数。

顺序表的运算:插入、删除。

复制代码十、线性链表复制代码数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。

结点由两部分组成:(1)用于存储数据元素值,称为数据域;(2)用于存放指针,称为指针域,用于指向前一个或后一个结点。

在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

链式存储方式即可用于表示线性结构,也可用于表示非线性结构。

线性链表,head称为头指针,head=null(或0)称为空表,如果是两指针:左指针(llink)指向前件结点,右指针(rlink)指向后件结点。

线性链表的基本运算:查找、插入、删除。

复制代码单链表指针域中存储的信息称做指针或链。

N个结点链结成一个链表,由于此链表的每一个结点中包含一个指针域,故又称线性链表或单链表。

循环链表循环链表是单链表的变形循环链表最后一个结点的next指针不为空,而是指向了表的前端。

为简化操作,在循环链表中往往加入表头结点。

循环链表的特点是:只要知道表中某一结点的地址,就可搜寻到所有其他结点的地址。

双向链表双向链表是指在前驱和后继方向都能游历(遍历)的线性链表。

在双向链表结构中,每一个结点除了数据域外,还包括两个指针域,一个指针指向该结点的后继结点,另一个指针指向它的前趋结点。

通常采用带表头结点的循环链表形式。

用指针实现表复制代码用数组实现表时,利用了数组单元在物理位置上的邻接关系表示表元素之间的逻辑关系。

优点是:无须为表示表元素之间的逻辑关系增加额外的存储空间。

可以方便地随机存取表中任一位置的元素。

缺点是:较大时,难以确定数组的合适的大小复制代码顺序表与链表的比较顺序表的存储空间可以是静态分配的,也可以是动态分配的。

链表的存储空间是动态分配的。

顺序表可以随机或顺序存取。

链表只能顺序存取。

顺序表进行插入/删除操作平均需要移动近一半元素。

链表则修改指针不需要移动元素。

若插入/删除仅发生在表的两端,宜采用带尾指针的循环链表。

存储密度=结点数据本身所占的存储量/结点结构所占的存储总量。

顺序表的存储密度= 1,链表的存储密度< 1。

总结:顺序表是用数组实现的,链表是用指针实现的。

用指针来实现的链表,结点空间是动态分配的,链表又按链接形式的不同,区分为单链表、双链表和循环链表。

十一、栈和队列复制代码栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。

栈按照“先进后出”(filo)或“后进先出”(lifo)组织数据,栈具有记忆作用。

用top表示栈顶位置,用bottom表示栈底。

栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。

队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。

rear指针指向队尾,front指针指向队头。

队列是“先进行出”(fifo)或“后进后出”(lilo)的线性表。

队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。

循环队列:s=0表示队列空,s=1且front=rear表示队列满复制代码十二、栈是限定仅在表尾进行插入或删除操作的线性表。

栈是一种后进先出(Last In First Out)/先进后出的线性表,简称为LIFO用指针实现栈—链(式)栈链式栈复制代码无栈满问题,空间可扩充插入与删除仅在栈顶处执行链式栈的栈顶在链头适合于多栈操作复制代码链栈的基本操作1)进栈运算进栈算法思想:1)为待进栈元素x申请一个新结点,并把x赋给该结点的值域。

3)栈顶指针指向x结点,即使x结点成为新的栈顶结点。

具体算法如下:SNode *Push_L(SNode * top,ElemType x){SNode *p;p=(SNode*)malloc(sizeof(SNode));p->data=x;p->next=top;top=p;return top;}2)出栈运算出栈算法思想如下:1)检查栈是否为空,若为空,进行错误处理。

2)取栈顶指针的值,并将栈顶指针暂存。

3)删除栈顶结点。

SNode *POP_L(SNode * top,ElemType *y){SNode *p;if(top==NULL) return 0;/*链栈已空*/else{p=top;*y=p->data;top=p->next; free(p);return top;3)取栈顶元素具体算法如下:void gettop(SNode *top){if(top!=NULL)return(top->data); /*若栈非空,则返回栈顶元素*/elsereturn(NULL); /*否则,则返回NULL*/}十三、队列(Queue)复制代码是只允许在表的一端进行插入,而在另一端进行删除的运算受限的线性表。

相关文档
最新文档