数据结构-基础类型

线性表

类型定义

  • 一个线性表是n个数据元素的有限序列
  • 线性表的长度可根据需要增长或缩短,即对线性表的数据元素可以查询,还可以进行插入和删除操作。

线性表的顺序表示

  • 用一组地址连续的存储单元一次存储线性表的数据元素
  • 表中相邻的元素ai和ai+1赋以相邻的存储位置LOC(ai)和LOC(ai+1),以元素在计算机内“物理位置相邻”表示线性表中数据元素之间的逻辑关系。

线性表的链式表示

  • 线性链表
    • 用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。
    • 存储数据元素信息的域称为数据域;存储直接后继存储位置的域称为指针域。
    • 指针域中存储的信息称做指针或链。
  • 循环链表
    • 表中最后一个结点的指针域指向头结点,整个链表形成一个环。
  • 双向链表
    • 双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前趋。

定义

  • 限定仅在表尾进行插入或删除操作的线性表
  • 对栈来说,表尾端称为栈顶,表头端称为栈底。
  • 栈的修改是按后进先出原则。

顺序栈

  • 利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。

栈的应用举例

  • 数制转换
  • 括号匹配检验
  • 行编辑程序
  • 算法
    • 迷宫求解
    • 表达式求值

栈与递归的实现

  • 一个通过调用自己或通过一系列的调用语句间接调用自己的函数,称为递归函数
  • 递归求解。
    • 八皇后问题
    • Hanoi问题

队列

定义

  • 队列是一种先进先出(FIFO)的线性表
  • 队列只允许在表的一端插入(队尾),另一端删除元素(队头)。

双端队列

  • 限定插入和删除操作在表的两端进行的线性表

队列的链式表示

  • 用链表表示的队列称为链队列。
  • 一个链队列需要两个分别指示队头和队尾的指针才能唯一确定。
  • 删除队列头元素算法时,需要修改头结点中的指针,但当队列中最后一个元素被删后,队列尾指针也丢失了,需要对队尾指针重新赋值(指向头结点)。

队列的顺序表示

  • 用一组地址连续的存储单元依次存放从队列头到队列尾的元素外,还需添加两个指针front和rear分别指示队列头元素及队列尾元素的位置。

数组

数组的顺序表示

  • 数组一般不作插入或删除操作,一旦建立了数组,结构中的数据元素个数和元素间的关系就不再发生变动。

树和二叉树

  • 树是n个结点的有限集。
  • 树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树称为结点的度。
  • 森林是m(m>=0)颗互不相交的树的集合。

二叉树

  • 二叉树每个结点至多只有两颗子树,并且二叉树的子树有左右之分。
  • 二叉树的性质
    • 在二叉树的第i层上最多有2^i-1^个结点
    • 深度为k的二叉树至多有2^k^-1个结点
    • 任何一颗二叉树T,如果其终端结点数为n~0~,度为2的结点数为n~2~,则n~0~ = n~2~ + 1
    • 具有n个结点的完全二叉树的深度为[log2n] + 1 <向下取整>
    • 满二叉树:一颗深度为K且有2k-1个结点的二叉树
      在这里插入图片描述
    • 完全二叉树:深度为k,有n个结点的二叉树,当且仅当其每个及诶单都与深度k的满二叉树中编号从1至n的结点一一对应。
  • 二叉树的顺序存储
    在这里插入图片描述
  • 二叉树的链式存储
    在这里插入图片描述

遍历二叉树和线索二叉树

  • 遍历二叉树
    • 遍历二叉树是以一定的规则将二叉树中结点排列成一个线性序列,得到二叉树中结点的先序序列或中序序列或后序序列。
    • 先序遍历:若二叉树为空,则空操作;否则访问根节点;先序遍历左子树;先序遍历右子树。
      *中序遍历:若二叉树为空,则空操作;否则中序遍历左子树;访问根节点;中序遍历右子树。
    • 后序遍历:若二叉树为空,则空操作;否则后序遍历左子树;后序遍历右子树;访问根节点。
  • 搜索二叉树
    • 若结点有左子树,则其lchild域指示其左孩子,否则令lchild域指示其前驱;若结点有右子树,则rchild域指示其右孩子,否则令rchild域指示其后继,以这种结点结构构成的二叉链表作为二叉树的存储结构,叫线索链表。其中指向结点前驱和后继的指针叫做线索。加上线索的二叉树称为线索二叉树。

树和森林

  • 树的存储结构
    • 双亲表示法
    • 孩子表示法
    • 孩子兄弟表示法
  • 森林与二叉树的转换

赫夫曼树(Huffman,最优二叉树)

  • 假设有n个权值,一颗有n个叶子结点的二叉树,每个叶子结点带权wi,则其中带权路径长度WPL最小的二叉树称为最优二叉树或赫夫曼树。

图的定义

  • 图的数据元素通常称为顶点,V是顶点的有穷非空集合;VR是两个顶点之间的关系的集合。
  • 有向图
  • 无向图
  • 完全图
  • 稀疏图
  • 稠密图
  • 连通图、连通分量

图的存储结构

  • 数组表示法
  • 邻接表
  • 十字链表
  • 邻接多重表

图的遍历

  • 深度优先遍历(DFS)
  • 广度优先遍历(BFS)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值