数据结构
李思净
这个作者很懒,什么都没留下…
展开
-
10.非线性结构-最优二叉树(哈夫曼树)
最优二叉树最优二叉树相关概念最优二叉树最优二叉树又称哈夫曼(Huffman)树,在编码和决策等方面有着广泛的应用。相关概念路径:树中两个结点之间所经过的分支,称为它们之间的路径。路径长度:一条路径上的分支数,称为该路径的长度。结点的权:给二叉树中的结点赋一个数,该数称为该结点的权。结点带权路径长度:从根结点到一个结点的路径长度与该结点的权值的乘积,称为该结点的带权路径长度。树的带权路径长度:一棵树中所有叶子结点的带权路径长度之和,称为该树的带权路径长度WPL,WPL的公式如下:其中,n原创 2020-05-21 15:28:54 · 1088 阅读 · 0 评论 -
9.非线性结构-二叉排序树(二叉查找树、二叉搜索树)
二叉排序树二叉排序树二叉排序树的运算二叉排序树二叉排序树是一种特殊的二叉树,它可以为空,若不空,则具有以下特性。若左子树非空,则左子树上所有结点的关键字均小于根结点的关键字。若右子树非空,则右子树上所有结点的关键字均大于根结点的关键字。左、右子树都是二叉排序树。二叉排序树有一个很重要的特性,即对二叉排序树做中序遍历时会得到一个有序序列。例如,对图6-12做中序遍历可得到一个有序序列:30、53、58、63、64、71、74、95。这就是这种二叉树命名为二叉排序树的原因。因为对二叉排序树做中序原创 2020-05-21 15:13:17 · 331 阅读 · 0 评论 -
8.非线性结构-线索二叉树
线索二叉树线索二叉树线索二叉树运算线索二叉树对二叉树进行一次遍历能够访问二叉树的所有结点,这是很多运算的基础。例如,在二叉树中查找一个满足给定条件的结点,就需要对二叉树进行一次遍历。在实际应用中,可能会多次应用某种运算。如在程序执行的不同阶段,可能会多次查找不同的元素,这样就需要多次执行递归遍历操作,增加程序的运行时间和空间开销。为了克服重复遍历,从而提高程序效率,一种可行的方法是利用二叉链表中的空闲指针域,将遍历得到的结点之间的前后关系保存在空闲指针域中。当需要再次遍历二叉树时,只需要根据空闲域原创 2020-05-20 11:05:05 · 200 阅读 · 0 评论 -
7.非线性结构-二叉树
二叉树二叉树基本概念结构特点特殊形态的二叉树二叉树的性质二叉树的存储结构顺序存储链式存储二叉树的运算二叉树二叉树的结构比较规范,有许多特有的性质和特点,可以用来方便地解决许多问题,是一种应用比较广泛的数据结构。基本概念二叉树是有n(n≥0)个结点的有限集合(n等于0时称为空二叉树)。在一棵非空二叉树中:有且只有一个特定的结点称为根结点;当n大于1时,除根结点外的结点又分为两个互不相交的子集L和R,L和R也都是二叉树,L称为二叉树的左子树,R称为二叉树的右子树。L的根结点称为二叉树的左孩子,R原创 2020-05-20 10:55:16 · 749 阅读 · 0 评论 -
6.非线性结构-树
树与二叉树树树的定义树的常用术语树的表示树的运算树树的定义树是有n(n≥0)个结点的有限集合(n等于0时称为空树)。在一棵非空树中:有且只有一个特定的结点称为根结点;当n大于1时,除根结点外的结点又分为m个互不相交的子集,每个子集又是一棵树,称为根结点的子树。为了更加直观的表示,常常用连线将根结点与其子树的根结点连接起来。如下图所示:树的常用术语结点:树的结点指一个数据元素及指向其子树的分支。孩子、双亲及兄弟结点:对于树中的任一结点,其所有子树的根结点称为它的孩子结点。该结点原创 2020-05-20 10:07:47 · 207 阅读 · 0 评论 -
5.线性结构-数组和广义表
数组和广义表数组和广义表数组多维数组的顺序存储以行为主的顺序存储以列为主的顺序存储特俗矩阵的压缩存储三角矩阵对角矩阵对称矩阵稀疏矩阵广义表广义表的存储数组和广义表数组和广义表是两种特殊的线性表。数组的特殊性在于它的长度是固定的。广义表的特殊性在于它的数据元素的类型可以不同。数组多维数组的顺序存储一维数组的存储比较简单,按照数据元素在数组中的顺序存储在一组连续的地址单元中。对于多维数组而言,采用顺序存储时,有两种方式:以行为主将数组的每一行视为一个数据元素以列为主将数组的每一列原创 2020-05-18 10:41:20 · 1917 阅读 · 0 评论 -
4.线性结构-队列
队列队列 Queue队列的运算顺序存储结构链式存储结构循环队列队列 Queue队列是操作受限的线性表。只能在线性表的一端进行插入操作,同时,只能在线性表的另一端进行删除操作,数据元素进入和退出队列的顺序相同。队列是只允许在一端进行插入,在另一端进行删除的线性表。允许插入的一端称为队尾,允许删除的一端称为队头。队列中的元素先进先出 FIFO(First In First Out)。不含元素的表称为空队列。队列的运算初始化。清空队列。读取队头元素。检查队列是否为空。入队。出队。顺原创 2020-05-18 09:45:04 · 234 阅读 · 0 评论 -
3.线性结构-栈
栈 stack栈是一种操作受限的顺序表。栈中的元素只能先进后出,即FILO(First In Last Out)栈是只能在表的一端进行插入和删除数据元素的线性表,允许进行插入和删除操作的一端称为栈顶,另一端称为栈底。不含数据元素的表称为空栈。栈的运算初始化。清空栈。读取栈顶元素。检查栈是否为空。入栈。出栈。顺序存储结构采用顺序存储方式的栈称为顺序栈。与线性表一样,栈也可以采用顺序存储方式。将栈底到栈顶的数据元素依次存放到一组连续的存储单元中,并用一个变量top指示栈顶元素的位原创 2020-05-18 09:37:25 · 200 阅读 · 0 评论 -
2.线性结构-线性表
title: 1.线性结构-线性表date: 2019-10-01 00:01:00categories:计算机基础数据结构线性表线性表是最常见、最简单的一种线性数据结构。逻辑结构线性表是n(n≥0)个具有相同特性的数据元素的有限序列,其中n表示线性表中数据元素的个数,称为线性表的长度。n等于0时,线性表为空表。线性表的逻辑结构具有以下特性:除第一个元素a1外,每一个数据元素都有且仅有一个前驱。除最后一个元素an外,每一个数据元素都有且仅有一个后继。数据元素之间是有序的,.原创 2020-05-14 11:12:24 · 294 阅读 · 0 评论 -
1.数据结构概述
数据结构概述数据结构逻辑结构物理结构数据的运算数据结构的表示方法二元组图形数据结构在计算机科学中,数据是一个比较广泛的概念,所有计算机输入、存储、处理和输出的信息都是数据,如字符、数字、图像、声音、视频等。在数据结构与算法中,数据元素是程序进行处理的一个独立的单位。数据元素可以包含若干子项目,称为数据项。在不同的问题领域,数据元素包含的数据项可能有所不同。数据结构的研究对象为问题中数据元素及其相互关系。具体来说,数据结构的研究内容包括数据的逻辑结构、数据的存储结构、数据的运算3个方面。逻辑结构数据原创 2020-05-14 10:38:28 · 601 阅读 · 0 评论