zoukankan      html  css  js  c++  java
  • 数据结构和算法

    数据结构和算法

    数据+数据元之间的关系+数据上得到操作

    线性表

    按照存储方式分类

    1.顺序存储:顺序表、栈、队列。随机访问效率高、随机插入效率低

    2.链式存储:链表。随机访问效率低、随机插入效率高(定位+修改指针)

    按照访问方式

    1.随机访问:一般线性表。链表、顺序表

    2.受限访问:受限线性表。栈、队列

    各结构细节

    1.链表

    数据结构的入门结构,树和图的基础,还可以实现栈和队列

    1.1常用操作:插入(头插和尾插),删除结点,查找,排序,反转等

    1.2单链表中带头结点的好处、循环链表中带尾结点的好处

    1.3衍生复杂结构:双向链表、循环链表、跳跃链表

    2.栈

    只有一端可以操作的数据结构,如栈变量,最普遍变量,函数栈,栈溢出(stackoverflow)

    2.1常用操作:入栈和出栈

    2.2衍生结构:顺序栈、链栈、共享栈

    2.3栈与递归的关系,栈的应用(数值表达式的计算,前缀、中缀、后缀表达式,括号匹配)

    3.队列

    两端分别只能进行插入和删除操作,操作系统中广泛使用

    3.1常用操作:一端插入、另一端删除(入队,出队)

    3.2判空判满条件:标志位法、牺牲元素空间法

    3.3衍生结构法:循环队列、链队、双端队列

    树-二叉树

    基本概念及结论

    1.深度、高度、层次,最多、最少节点数,度(n0=n2+1),(带权)路径长度,满二叉树,完全二叉树

    2.存储方式:顺序存储(数组,父子结点下标规律),链式存储(二叉链表)

    遍历

    1.按照顺序分类:先序遍历,中序遍历,后序遍历,层次遍历

    2.按照编码方式分类:递归和非递归

    其他知识点

    1.最优二叉树(哈夫曼树,带权路径长度最短),数据压缩和编码

    2.树和森林的转换

    3.变态二叉树

    3.1二叉排序树(二叉搜索树)

    3.2二叉平衡数。是二叉排序树的强大版本,能够自平衡,避免二叉排序树退化为一个链表。其插入、查找、删除的最好最坏时间复杂度都为O(logN)

    3.3红黑树、败者树、KD树、线段树

    3.4堆:所有父节点的值都不大(小)于子节点的值的完全二叉树称为小(大)顶堆。

    3.5非二叉树的经典:B树(B-tree)、B+树(B+tree)、B*树、Trie树、R树、M树

    图-结构

    分类

    有向图&无向图,完全图,(强)连通图

    存储结构

    邻接矩阵:n阶方阵,适合稠密图;对于无向图:对称矩阵;对于有向图:行是出度,列是入度

    邻接表:适合稀疏图,不唯一,顶点表+邻接表

    遍历

    深度优先遍历(借助栈)

    广度优先遍历(借助队列)

    相关的重要算法

    最小生成树算法:即权值最小的生成树,Prim算法,Kruskal算法

    拓扑排序:不唯一

    最短路径:Dijkstra算法、Floyd算法

    关键路径

  • 相关阅读:
    Mysql备份工具xtraback全量和增量测试
    Linux进程管理四大工具ps dstat top htop
    Linux Netcat 命令——网络工具中的瑞士军刀
    Linux 下载工具 aria2
    C语言宏基础总结
    使用浏览器做编辑器
    设计模式(1)
    OpenGL 编程(1)
    使用ffmpeg推流
    FFMPEG 解码和编码(编码mjpeg)
  • 原文地址:https://www.cnblogs.com/yulu612/p/7341964.html
Copyright © 2011-2022 走看看