数据结构

来源:互联网 发布:微信跳转淘宝 编辑:程序博客网 时间:2024/06/10 20:51

定义

算法处理对应的数据,这些被处理的数据,都必须按照一定的规则进行组织,当这些数据之间存在一种或多种特定关系的时候,我们就称这种关系为结构

分类

  • 线性结构:数据与元素之间是一对一的结构,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继;
  • 树性结构:数据结构中的元素存在一对多的关系,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关;
  • 网状结构:数据结构中的元素存在多对多的关系,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。

1.线性结构

  • 1.1线性表
    若干个数据组成的集合称作线性表,只有一个“首元素”,只有一个“末元素”,除末元素之外,其余元素均有唯一的后继元素,除首元素之外,其余的元素均有唯一的前驱元素。

    总结:线性表操作方式:添加结点,插入结点,删除结点,查找结点,遍历结点,统计结点。

    • 1.1.1顺序线性表:
      操作步骤:
      1.1.1.1 定义顺序队列结构
      1.1.1.2 初始化队列
      1.1.1.3 获取队列状态
      1.1.1.4 入队操作
      1.1.1.5 出队操作
      1.1.1.6 获取队头元素
    • 1.1.2链式线性表(动态存储分配内存,包含数据模块和指针)
      1.1.2.1 定义链表结构
      1.1.2.2 添加结点至尾部
      1.1.2.3 添加结点至首部
      1.1.2.4 插入结点
      1.1.2.5 查找结点
      1.1.2.6 删除结点
      1.1.2.7 链表的长度
      来自网络
  • 1.2队列(先进先出)
    队列是一种特殊的线性表,至允许在表的前端(队头)进行删除操作,在表的后端(队尾)进行插入操作。

    • 1.2.1
      1.2.1.1 定义顺序队列结构(data ,head ,tail)
      1.2.1.2 初始化队列
      1.2.1.3 获取队列状态
      1.2.1.4 入队操作
      1.2.1.5 出队操作
      1.2.1.6 获取队头元素
      来自网络
  • 1.3栈(后进先出)
    栈是一种线性表的特殊形式,是按照(Last In First out,LIFO)的原则处理数据。只有入栈(Push,即将数据保存到栈顶,先移动指针,然后将数据保存到栈顶指针所指的位置)和出栈(Pop,即将栈顶的数据弹出,然后修改栈顶指针,使其指向栈中的下一个元素)。

    • 1.3.1
      1.3.1.1 定义顺序栈结构(data ,head ,tail)
      1.3.1.2 初始化栈
      1.3.1.3 判断栈的状态
      1.3.1.4 入栈操作
      1.3.1.5 出栈操作
      1.3.1.6 获取栈顶元素

2.树性结构

  • 2.1树(层次结构)
    它是由N(N>=1)个有限节点组成一个具有层次关系的集合.

    • 2.1.1二叉树
      来自网络

    • 满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树
    • 完全二叉树:只有最下面的两层结点度能够小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树
      2.1.1.1 定义二叉树链式结构
      2.1.1.2 初始化二叉树
      2.1.1.3 添加结点到二叉树
      2.1.1.4 获取二叉树的左右子树
      2.1.1.5 获取二叉树的状态
      2.1.1.6 在二叉树中查找
      2.1.1.7 清空二叉树
  • 2.2二叉树的遍历

    • 先序遍历 :先访问根节点,再按先序遍历左子树,最后按先序遍历右子树(DLR)
    • 中序遍历 :先按中序遍历左子树,再访问根节点,最后按中序遍历右子树(LDR)
    • 后序遍历 :先按后序遍历左子树,再按后序遍历右子树,最后访问根节点(LRD)
    • 按层遍历 :按二叉树的层进行遍历,可更直观的从图中得出遍历的结果。
  • 2.3线索二叉树
    来自网络

    • 先序线索二叉树 :(DLR)
    • 中序线索二叉树 :(LDR)B F D A C G E H
    • 后序线索二叉树 :(LRD)
  • 2.4最优二叉树(赫夫曼树)
    • 2.4.1带权路径WPL
    • 2.4.2赫夫曼编码(权值是:0,1)

    3.网状结构

    3.1图(网状关系)
    图是一种复杂的非线性结构。图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E).

    • 无向图
    • 有向图

    3.2 图的存储

    • 邻接矩阵(1表示有链接0表示无链接,缺点:浪费空间)
      图片来自网络
    • 邻接表
      图片来自网络

    3.3图的遍历

    • 3.3.1广度优先遍历
      3.3.1.1 从图中选择一个未被访问的顶点Vi,将其标记为已访问
      3.3.1.2 接着依次访问Vi的所有未被访问的邻接点,并标记为已被访问
      3.3.1.3 从这些邻接点出发进行广度优先遍历,直至图中所有和Vi有路径相桶的顶点都被访问过。
      3.3.1.4 重复(3.3.1到3.3.3)直到所有顶点都被访问
    • 3.3.2深度优先遍历
      3.3.2.1 从图中选择一个未被访问的顶点Vi,将其标记为已访问
      3.3.2.2 接着依次访问Vi的一个未被访问的邻接点,进行深度优先遍历
      3.3.2.3 重复(3.3.2.2),直至图中所有和Vi有路径相桶的顶点都被访问过。
      3.3.2.4 重复(3.3.1到3.3.3)直到所有顶点都被访问
    1 0
    原创粉丝点击