数据结构
文章平均质量分 63
1
WannaRunning
这个作者很懒,什么都没留下…
展开
-
交换排序——冒泡
冒泡排序是交换排序的一种 冒泡排序的基本实现 如果有n个数值进行升序排序,根据外层循环可以看出排序总共会从左到右走n-1趟,每一趟外层循环执行完都能把一个最大的值放在最后。 循环执行总次数是 (n-1)+(n-2)+...+1 冒泡排序的改进实现 ...原创 2021-03-04 11:46:32 · 71 阅读 · 1 评论 -
排序——插入排序
插入排序分为 直接插入排序 和 二分插入排序 和希尔排序。本文章排序元素的结构如下: 直接插入排序 直接插入排序 使用顺序查找法查找元素插入位置。原创 2021-02-23 15:52:01 · 87 阅读 · 0 评论 -
排序概述和分类
目录 排序的分类 按存储介质分 按比较器的个数分 按操作分类 按辅助空间分类 按稳定性分类 按自然性分类 排序的分类 按存储介质分 内部排序:数据量不大,基于内存操作排序。 外部排序:数据量较大,数据在外存(文件排序)。 按比较器的个数分 串行排序: 单处理机(同一时刻比较一对元素) 并行排序: 多处理机 (同一时刻比较多对元素) 按操作分类 比较排序:用比较的方法实现排序(插入,交换,选择)。 基数排序 :不比较元素大小。仅根据元素本身取值确定其有序位置。.原创 2021-02-23 14:46:24 · 93 阅读 · 0 评论 -
哈夫曼树和应用
哈夫曼树和相关术语概念 结点带权路径长度 在一棵树中,根节点到该节点的分支数 * 该节点的权。 树的带权路径长度 在一颗树中,所有叶子节点的带权路径长度相加之和。 什么是哈夫曼树 哈夫曼树,简而言之就是最优树,即带权路径长度最短的树。在哈夫曼树中,权值越大的叶子节点离根节点越近。 哈夫曼树的构造算法(贪心算法) 以所有权重节点为单个树组成森林; 选用两个最小树作为左右子树,两树权重之和作为根节点,组成新二叉树; 在森林中删除上一步选用的树,放入组建的新二叉树; 继续.原创 2021-02-22 18:04:27 · 97 阅读 · 0 评论 -
线性表和线性表的顺序存储结构-顺序表
线性表定义 有N个(N>=0)相同特性的数据元素组成的有限序列称为线性表。元素之间都是一对一的关系,即最多有一个(起始节点和终端节点例外)直接前趋和一个直接后继。 线性表的术语 表中第一个元素称为起始节点,最后一个元素称为终端节点; 对于表中的一个元素而言,它的前一个元素称为当前节点的直接前趋,它的后一个元素称为当前节点的直接后继。 线性表的存储结构 线性表的存储结构有两种,顺序存储和链式存储。 顺序存储 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构称为顺序存储。即逻.原创 2021-02-19 10:11:25 · 160 阅读 · 0 评论 -
线性表的链式存储方式(1)—单链表
目录 链表 单链表 双链表 循环链表 头指针 头结点 首元结点 链表的空表如何表示 链表的特点 单链表的存储结构实现(C语言示例) 带头结点的单链表初始化 单链表的销毁 单链表的清空 单链表表长度 单链表取第 i 个元素值(重要) 按值查找——查找某元素在链表中的位置(重要) 线性表的存储结构有两种,顺序存储和链式存储,链式存储对应的存储结构就是链表。 链表 用一组物理位置任意的存储单元来存放线性表的数据元素;这组存储单元可以是连续的,也可以是不连续的;这样的..原创 2021-02-20 11:45:27 · 196 阅读 · 1 评论 -
线性表的链式存储方式(2)—双链表
目录 双链表 双链表的特点 双链表的插入(在第 i 个元素前插入) 双链表 双链表相对于单链表而言,每个节点上有指向前趋结点的指针,也有指向后继结点的指针。 双链表的特点 双链表中,某个节点既可以通过它的前趋结点找到,也可以通过它的后继结点找到它。而单链表中只能通过前趋结点找到。 缺点:在插入,删除这种操作中,与单向链表相比双链表需要同时操作两个方向的指针,时间复杂度是 O(n)。 双链表的插入(在第 i 个元素前插入) 思路:新结点前趋指针指向第 i 个结点,后继指针指向第 i-.原创 2021-02-20 17:57:35 · 159 阅读 · 0 评论 -
线性表的链式存储方式(3)——单循环链表和双循环链表
前面写了 线性表的链式存储方式中的存储结构就是链表的形式,主要以单链表的形式写了相关的操作,这篇文章写一下循环链表。 循环链表 循环链表是一种头尾相接的链表结构,链表中最后一个结点的指针域指向头节点,是整个链表成为一个环。 循环链表的空表 与单链表不同,循环链表的空表只有data 域是空,指针域是指向自己的。 循环链表如何判断终端结点 在单链表中,可以根据结点的指针域为空判断该结点时最后一个结点即终端结点。但是在循环链表中,没有指针域为空的结点,所以不能以指针域为空作为判断是否时终端结点的依原创 2021-02-20 16:58:52 · 275 阅读 · 0 评论 -
数据结构——栈和队列
栈和队列的逻辑结构与线性表的结构一致,可以看作是特殊的线性表。 栈 栈是运算受限的线性表,插入和删除只能在一端进行操作;允许插入和删除操作的一端称为栈顶。 不含任何数据元素的栈称为空栈。 栈具有先进后出,后进先出的特点。 栈的实现方式 栈的顺序实现 用顺序结构实现的栈称为顺序栈。通常使用一个一维数组和一个记录栈顶位置的变量实现。 栈的链接实现 使用链表作为存储结构实现栈的先进后出的特性;称之为链栈;链栈不用考虑初始化的大小。 队列 队列是有限个同类型元素的线性序列,是一种先进先出的线性原创 2021-02-18 17:07:39 · 124 阅读 · 0 评论 -
数据结构——树
目录 树 树的概念 节点的度 树的度 节点的层次 树的高度 叶子 有序树 二叉树 二叉树的性质特点(重要) 树 树的概念 树是N个节点的有限集合,n=0时,称之为空树,n>0时,有且仅有一个称为根的节点,其余节点分别为m个 互不相交 的非空集合,这些集合称之为 根的子树。 相对于线性结构中的单后继节点,树形结构中的一个节点可以有一个或多个直接后继节点。 节点的度 树上该节点的子树的数目成为该节点的度(几个分支就是几) 树的度 一棵树上所有节点的度中的最大值就是这.原创 2021-02-18 11:31:50 · 90 阅读 · 0 评论