zoukankan      html  css  js  c++  java
  • 计算机基础----数据结构

    一、数据结构三要素

    逻辑结构:线性结构、集合、树形结构、图形结构

    存储结构:顺序存储、链式存储、索引存储、散列存储

    数据的运算:定义为逻辑,实现由存储

    二、算法复杂度

    算法评价:时间复杂度(O(n))+空间复杂度(S(n))

    加法规则:o(n)=0(f(n))+o(g(n))=o(max(f(n),g(n)))

    乘法规则:0(n)=0(f(n))*o(g(n))

     三、链表和队列

    1、链表

    单链表,双链表,循环链表 

    2、栈和队列

    栈:先进后出

    队列:一头进,底端出

    顺序栈

    共享栈

    链式栈:多个栈共享存储空间

    四、数组和特殊矩阵

    1、数组的存储方式

    顺序存储

    二维数组的两种存储方式:以行为主序,以列为主序

    2、矩阵

    计算:

    1、以行为主序的存储结构下的二维数组a[m][n]中,任意元素a[i][j]的存储位置为:

     2、对称矩阵,

    行优先压缩存储上三角:

    (i<=j)

     行优先压缩下三角:

    (i>=j)

     3、三对角矩阵

    矩阵中的任意元素在数组B中的存储位置为:2*i+j

    压缩数组中下标为k的元素,在三角矩阵中的行数与列数:i=(k+1)/3,j=k-2*i

    3、广义表

    又称列表,是线性表的一个扩展,元素可以是一个数据元素,也可以是一个子表

    广义表为非空的时候,第一个表元素为表头,其余表元素组成的表为表尾

    五、树

    度:节点所含有的子树棵树

    叶节点:度为0的节点

    树的表示方法;树形、集合文氏图、凹入表、广义表

    1、二叉树

    二叉树中的每个节点至多有两棵子树,左右子树次序不能随意颠倒

    两种特殊二叉树:完全二叉树、满二叉树

    2、二叉树

    1)二叉树的计算

    2)二叉树的存储结构

    三种遍历方法:先序遍历,中序遍历,后序遍历

    3)线索二叉树

    在哪个节点的二叉树,有n+1个空链指针域,利用空链表指针存放某种遍历次序下,该节点的前趋节点和后趋节点的指针,这些指针为线索

     3、树的存储结构表示

    1)双亲表示法、子女链表表示法、子女-兄弟链表表示法、广义表表示法

    2)树转换为二叉树、森林,

    4、树的遍历

    主要分为深度遍历与广度遍历。

    深度遍历分为:先序、中序、后序

    广度遍历:与二叉树的层序遍历相似,分层进行访问

    5、赫夫曼树

    路径长度:从树的一个节点到另一个节点所经历的分支数目

    树的路径长度:从树的根节点到每一个节点的路径长度之和

    代权路径长度:权值*路径长度

    赫夫曼编码:是数据压缩的重要方法,应用在通信领域,消除了冗余数据,提高了通信信道的传输效率

    六、图

    图是由顶点集合V和顶点间的关系集合E组成的一种数据结构。

    无向图

    有向图

     有向完全图:每两个顶点之间都有一条边

    无向完全图:每两个顶点之间都有方向相反的两条边

    网络:带权图

    路径长度:对于不带权的图,指该路径上边的条数;对于带权图,路径长度是指该路径上各边权值的和

    连通图:在无向图中,若顶点i到顶点j有路径,则称顶点i和顶点j是联通的。若图中任意两顶点都是连通的,则称该图为连通图

    连通分量:非连通图的极大连通子图

    强连通图:在有向连通图中,任意两顶点之间都有相反的路径

    生成树:一个无向连通图的生成树是他的极小连通子图;若是有向图,则可能得到他的由若干有向树组成的生成森林

     1、图的存储结构

    邻接矩阵表示

    使用两个数组来存储图:将顶点信息组织称一个定点表,利用一个邻接矩阵的二维数组来表示各顶点之间的邻接关系

    无向图的邻接表示:对称,第i行会第j列的元素之和为顶点i的度

    有向图的邻接表示:第i行的元素之和为顶点i的出度,第j列的元素之和为顶点j的入度

    邻接表表示

    邻接矩阵的额隔行分别组织成一个单链表

    无向图

    无向图中的 特点:

    • 邻接表不唯一
    • 若无相图中有n个顶点,e条边,则其邻接表需要、n个头结点和2e个表结点

     有向图的邻接表,以其箭头尾的数目来进行计算

     有向图的出度:顶点i对应链表中的节点数就是i的出度

    有向图的入度:建立一个链接以i为头的弧的表,即逆邻接表

     多重表表示

     边界点结构:

     顶点结构

     十字链表结构

    边界点结构

     顶点结构

     图的遍历

    深度优先搜索

    广度优先搜索

    最小生成树

     各个节点进行连通,通过最小权值的边

    两种算法:普利姆(prime):选取顶点权值最小的那个边,重复这个过程,直到所有节点都加入

    克鲁斯卡:选取所有剩余边权值最小的,重复这个过程,直到所有节点都加入

    活动网络

    AOV网络:有向图用顶点表示活动,用有向边<i,j>表示活动i先于活动j进行

    拓扑排序:构造AOV顶点的拓扑有序序列的运算成为拓扑排序

    AOE网络:无有向环的带权有向图,有向边表示工程的各个活动,权值表示活动时间,定点表示事件

    关键路径:在AOE网络中,从源点(入度为0的定点)到汇点(出度为0)具有最大长度的路径成为关键路径

    拓扑排序过程:(如果存在有向环,则会剩余些顶点)

    1. 输入AOV网络;
    2. 选择一个没有前趋节点的定点,并输出
    3. 删除该顶点的所有边
    4. 重复2和3

    最短路径

    迪杰斯特拉算法:贪心策略,按路径长度的递增次序逐步产生最短路径

    弗洛伊德算法

    七、查找

    1、查找方法

    顺序查找法:在线性表中进行查找

    折半查找法,又称二分法

    分块查找法:快与快之间必须进行排序(升序或是降序)。查找时,先通过索引表查找块,再在块中进行顺序查找。

    2、二叉查找树与平衡二叉树

    二叉查找树 相关定义:

    1. 每个节点都有一个作为查找依据的关键码,所有节点的关键码互不相同
    2. 若它的左子树不为空,则左子树上所有节点的关键码均小于根节点的关键码
    3. 若它的右子树不为空,则右子树上所有节点的关键码均大于根节点的关键码
    4. 它的左右子树也是二叉查找树

    平衡二叉树:左右子树都是平衡二叉树,左右子树高度之差的绝对值不超过1

    3、B树

  • 相关阅读:
    Backtrace stopped: previous frame identical to this frame (corrupt stack?)
    windows 10 无法启动 windows update 服务 错误 0x80070005 拒绝访问
    error LNK2019: 无法解析的外部符号 __imp_recv,该符号在函数 evthread_notify_drain_default 中被引用
    opencv3.1.0 在控制台程序中报错:winnt.h(6464): error C2872: ACCESS_MASK: 不明确的
    使用OCCI操作Oracle数据库写入中文乱码
    fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h""
    清空资源管理器访问过FTP的账号、密码
    Windows系统查看xxx.dll、xxx.lib文件的导出函数、依赖文件等信息的方法
    ConvertBSTRToString导致的内存泄漏
    mxnet.base.MXNetError: src/imperative/./imperative_utils.h:70: Check failed: inputs[i]->ctx().dev_mask() == ctx.dev_mask() (1 vs. 2)
  • 原文地址:https://www.cnblogs.com/yujin123456/p/13604444.html
Copyright © 2011-2022 走看看