02142数据结构导论**重点

2021-03-10 浏览次数:86

**章    


算法+数据结构=程序

从宏观上看,数据、数据元素和数据项实际上反映了数据组织的三个层次,数据可由若干个数据   元素组成,而数据元素又可由若干个数据项组成。

数据的逻辑结构是指数据元素之间的逻辑关系。

集合中任意两个结点之间都没有邻接关系,组织形式松散;

线性结构中结点按逻辑关系依次排列形成一条“链”,结点之间一个一个依次相邻接;

树形结构具有分支、层次特性,其形态像自然界中的树,上层的结点可以和下层多个结点相   邻接,但下层结点只能和上层的一个结点相邻接;

图结构较复杂,其中任何两个结点都可以相邻接。


*二章    线性表


线性表Linear List是一种线性结构,它是由 nn>0个数据元素组成的有穷序列。

线性表的顺序存储:将表中的结点依次存放在计算机内存中一组连续的存储单元中,一般使用数   组来表示顺序表。

顺序表的插入与删除:元素的移动次数不仅与顺序表的长度 n 有关,还与插入的位置 i 有关。

线性表的链接存储:各个结点在内存中的存储位置并不一定连续,可存放在内存的不同位置。   5.单链表的插入:p->next=q->next 和 q->next=p 两条语句的执行顺序不能颠倒。

单链表上的删除:p=q->next;Q->next=p->next;free (p); 7.双向循环链表的删除:

1p->prior->next=p->next;    //p 前驱结点的后链指向 p 的后继结点

2p->next->prior=p->prior;   //p 后继结点的前链指向 p 的前驱结点

3free (p) ;    '    //释放的空间8.双向循环链表的插入:

1一〉prior=p;

2t->next=p->next

3p->next->prior=t

4p->next=t


*三章    栈、队列和数组


栈的概念:栈是运算受限的线性表,这种线性表上的插入和删除运算限定在表的某一端进行。允   许进行插入和删除的一端称为栈**,另一端称为栈底。不含任何数据元素的栈称为空栈。处于栈**位   置的数据元素称为栈**元素。

栈的运算特点:后进先出。

栈的插入和删除操作分别称为进栈和出栈。

双栈满的条件:top1+1=top2假设 top1<top2) 5.栈的简单应用与递归:函数调用应用栈

顺序队列的入队操作:SQ.rear=SQ.rear+1;SQ.data[SQ.rear]=x;

出队操作:SQ.front=SQ.front+1;

循环队列的入队操作:SQ.rear=(SQ.rear+1)%maxsize;SQ.data[SQ.rear]=x;

出队操作:SQ.front=(SQ.front+1)%maxsize;

循环队列满条件:((CQ.rear+1%maxsize==CQ.front)成立队列空条件:CQ.rear==CQ.front)成立

矩阵的压缩存储:针对一些有许多值相同的元素或零元素的高阶矩阵,为了节省空间,对这类矩阵采用多个值相同的元素只分配一个存储空间,零元素不存储的策略,这一方法称为矩阵的压缩存储。

特殊矩阵:n 阶的对称矩阵和三角矩阵占用存储空间大小为:

1)对称矩阵。若一个 阶方阵 中的元素满足下述条件:n(n+1)/2 11.稀疏矩阵的三元组表示法:

i,j,aij,i 表示行序号,表示列序号,aij 是非零元素的值。


*四章    树和二叉树


树的概念:可为空,若不空,左右子树互不相交。

叶子:度为 0 的结点

二叉树的概念:二叉树(Binary Tree)是 n(n0)个元素的有限集合,该集合或者为空,或者由一个根及两棵互不相交的左子树和右子树组成,其中左子树和右子树也均为二叉树。

二叉树的性质:

二叉树* ii1层上至多有 2i1 个结点。

深度为 kk1的二叉树至多有 2k 1 个结点。

对任何一棵二叉树,若度数为 0 的结点(叶结点个数为 n0,度数为 2 的结点个数为 n2,则n0=n2+1

含有 n 个结点的完全二叉树的深度为 log2n +1

完全二叉树结点编号关系:编号 i 的双亲为i / 2 ,左孩子为 2*i,右孩子为 2*i+1

二叉树的顺序存储:用一维数组来实现。对非完全二叉树不成立。如果需要顺序存储非完全二叉   树,首先必须将其转化为完全二叉树,可增设若干个虚拟结点。但这种方法造成了空间的浪费。

二叉树的链式存储:二叉树有不同的链式存储结构,其中较常用的是二叉链表与三叉链表。

每个二叉链表还必须有一个指向根结点的指针,该指针称为根指针。对二叉链表的访问只能从根   指针开始。

二叉树遍历的递归实现:

先序遍历:根--

中序遍历:左--

后序遍历:左--

二叉树的层次遍历:二叉树的层次遍历是指从二叉树根结点的这一层开始,逐层向下遍历,在每   一层上按从左到右的顺序对结点逐个访问。层次遍历可用队列来实现。

树的存储结构:

1)孩子链表表示法;(2)带双亲的孩子链表表示法。;(3)孩子兄弟链表;(4)双亲表示法。   孩子兄弟链表的结构形式与二叉链表完全相同,但结点中指针的含义不同。

树、二叉树、森林的关系:

树(森林)转化成二叉树:①左孩子=左孩子;②兄弟=右孩子。

二叉树转换成树(森林):①左孩子=左孩子;②右孩子=兄弟。

森林的遍历:

森林有两种遍历方法:先序遍历和中序遍历

对森林转换成的二叉树分别进行先序遍历和中序遍历,可以分别得到与该森林的先序序列和中序   序列相同的序列。

分类与判定树:用于描述分类过程的二叉树称为判定树。

哈夫曼树的构造:两个较小的结点构造新结点。   n 个结点构成的哈夫曼树共有 2n-1 个结点。

哈夫曼编码:左 0 右 1


*五章    图


任何两点之间都有边的无向图称为无向完全图。一个具有 n 个**点的无向完全图的边数为C2 =nn-1/2 。任何两点之间都有弧的有向图称为有向完全图。一个具有 n 个**点的有向完全图的弧数为P2 =nn-1 

含有 个结点的图的生成树的边的数目一定为 n-1,若大于,说明有环。

图的存储结构

邻接矩阵:无向图的邻接矩阵是一个对称矩阵。

邻接表:有向图邻接表的表长等于点的出度,逆邻接表的表长等于点的入度。

图的遍历:遍历图的基本方法有两种:深度**搜索和广度**搜索。

连通图的深度**搜索:深度**搜索遍历类似于树的先序遍历。(注意:可回退

连通图的广度**搜索:广度**搜索遍历类似于树的按层次遍历的过程。

图的应用:

较小生成树

①较小生成树的概念:一个图的较小生成树是图所有生成树中权总和较小的生成树。

②构造较小生成树的 Prim 算法:从一个**点出发添加权值小的边。

③构造较小生成树的克鲁斯卡尔(Kruskal)方法:从多有边当中选择权值较小的边。

单源较短路径Dijkstra 算法

拓扑排序:

前提条件:完成拓扑排序的前提条件是 AOV 网中不允许出现回路。步骤:

图中选择一个入度为 0 的**点,输出该**点;

从图中删除该**点及其相关联的弧,调整被删弧的弧头结点的入度(入度减 1);

重复执行(1)(2)直到所有入度为 0 的**点均被输出,拓扑排序完成,或者图中再也没有入度

为 的**点。




gzy1206.b2b168.com/m/
联系我们

在线客服: 897812103

联系人:郭致远

联系电话: 15253185350