——理论基础——
数据结构理论基础
Alex_McAvoy
想要成为渔夫的猎手
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
理论基础 —— 队列
【概述】 队列(Queue)是一种特殊的线性表,是只能在一端插入在另一端删除的特殊线性表。它按照先进先出的原则存储数据,先进入的数据被压入队首,最后的数据在队尾。 由于队列满足先进先出,后进后出的性质,因此也被称为先进先出表(FIFO)或后进后出表(LILO) 当队列中元素个数为零时称为空队列。 【逻辑结构】 队列是一种特殊的线性表,其允许插入(入队)的一端称为队尾(tail),允许...原创 2019-04-01 12:25:59 · 1622 阅读 · 0 评论 -
理论基础 —— 线性表
【逻辑结构】 线性表是零或多个数据元素组成的有限序列,其中,数据元素的个数定义为线性表的长度,当长度为 0 时称为空表,反之称为非空表。 一个非空表常记为:,其中 ai 是表中的第 i 个数据元素,表中的 领先于,领先于,称是的直接前驱元素,是的直接后继元素。当时,有且只有一个直接后继;当时,有且只有一个直接前驱。 【顺序存储结构】 1.概述 线性表...原创 2019-03-08 17:25:53 · 760 阅读 · 0 评论 -
理论基础 —— 栈
【概述】 栈(Stack)是一种特殊的线性表,只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。 由于栈满足先进后出,后进先出的性质,因此也被称为先进后出表(FILO)或后进先出表(LIFO) 当栈中元素个数为零时称为空栈。 【栈的逻辑结构】 栈的栈底固定,栈顶浮动,允许进行插入和删除操作的一端称为栈顶(Top),另一端为栈底...原创 2019-03-24 19:18:59 · 1070 阅读 · 0 评论 -
理论基础 —— 树
【树的定义】 树是一种非线性的有序数据结构,能很好地描述有分支和层次特性的数据集合,其是递归定义的。 一颗树是由 n(n>=0) 个元素组成的有限集合,其中: 当 n=0 时,称为空树 每个元素称为结点(node) 对于任何一棵非空树,满足以下条件: 有且仅有一个特定的根结点 (root),其没有前驱。 除根节点外每个结点都有唯一一个前驱结点 每个结点都有 0 或多个后继结点 ...原创 2018-06-11 19:56:25 · 1868 阅读 · 0 评论 -
理论基础 —— 二叉树
【二叉树的定义】 二叉树( binary tree)是 n 个结点的有限集合,该集合或为空集(空二叉树),或由一个根结点与两棵互不相交的,称为根结点的左子树、右子树的二叉树构成。 二叉树的特点是: 每个结点最多有两棵子树,故二叉树中不存在度大于 2 的结点 二叉树是有序的,其次序不能任意颠倒,即使树中的某个结点只有一棵子树,也要区分它是左子树还是右子树 二叉树具有以下 5 种基本形态: ...原创 2018-06-13 17:00:36 · 999 阅读 · 0 评论 -
理论基础 —— 图
【图】 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G=(V,E),其中 V 是非空有限集合,代表顶点,E 是可以为空的有限集合,代表边。 若顶点 vi 和 vj 间的边没有方向,则称这条边为无向边,用无序偶对 (vi,vj) 表示;若顶点 vi 和 vj 间的边有方向,则称这条边为有向边(弧),用有序偶对 <vi,vj>表示,其中 vi 称为弧头,vj 称为弧...原创 2019-06-12 21:50:39 · 4817 阅读 · 0 评论 -
理论基础 —— 排序
【概述】 1.通常所说的排序算法指的是内部排序算法,即:数据记录在内存中进行排序。 2.排序算法大体可分为两种: 1)非线性时间比较类排序:交换类排序、插入类排序、选择类排序、归并排序,时间复杂度O(nlogn) ~ O(n^2)。 2)线性时间非比较类排序:计数排序、基数排序和桶排序,时间复杂度可以达到O(n)。 3.总结: 1)比较类排序中,归并排序号称最快,其...原创 2019-06-02 20:12:24 · 884 阅读 · 0 评论 -
理论基础 —— 查找
【概述】 查找是在具相同类型的记录构成的集合中,找出满足给定条件的记录,给定的查找条件是多样的,为便于讨论,将查找条件限制为 “匹配”,即查找关键码等于给定值的记录。 在查找中,常将数据元素称为记录,将可以标识一个记录的某个数据项称为关键码,关键码的值称为键值,若关键码可以唯一标识一个记录,则称其为主关键码,反之,称为次关键码。 【查找分类】 1.静态查找 静态查找是指不涉及插入、删除操...原创 2019-06-04 17:25:51 · 587 阅读 · 0 评论 -
理论基础 —— 索引
【概述】 当数据量不是很大时,查找技术足以满足需求,但对于计算机应用程序来说,其是以大型数据库为中心,并将大型数据库作为文件存放于外存中的,当需要进行查找操作时,查找技术的处理过于缓慢,因此有了索引技术。 索引是为了加快查找速度而设计的一种数据结构,一个文件可能有多个相关的索引,每个索引往往只支持一个关键码,通过索引可以实现对文件中记录的快速访问,其常用于组织大型数据库以及磁盘文件。 关于索...原创 2019-07-03 15:39:13 · 529 阅读 · 0 评论 -
理论基础 —— 堆
【堆的定义】 堆结构是具备以下性质的完全二叉树: 小根堆:每个结点的值都小于或等于其左右孩子结点的值 大根堆:每个结点的值都大于或等于其左右孩子结点的值 若将堆按照层序从 1 开始编号,则结点间满足下列关系: 小根堆: 大根堆: 从堆的定义可以看出,一个完全二叉树如果是堆,那么其根结点(堆顶)一定是当前堆中所有结点的最大值(大根堆)或最小值(小根堆),以层序结点编号为下标,将堆用顺序结构...原创 2018-06-14 21:06:51 · 590 阅读 · 0 评论 -
ACM 常用算法合集
【基础算法】 模拟算法:点击这里 数据排序:点击这里 高精度计算:点击这里 递推算法:点击这里 递归算法:点击这里 贪心算法:点击这里 分治法:点击这里 二分查找:点击这里 三分查找:点击这里 尺取法:点击这里 【进阶算法】 数据搜索:点击这里 字符串处理:点击这里 动态规划:点击这里 数据结构相关:点击这里 图论算法:点击这里 【数学相关】 数论:点击这里 组合...原创 2018-04-12 20:31:16 · 9691 阅读 · 5 评论
分享