
数据结构
文章平均质量分 89
jefferent2008
这个作者很懒,什么都没留下…
展开
-
栈基础
1. 栈的基础 栈,也成为堆栈,是一种重要的线性结构。栈具有线性表的特点:每一个元素只有一个前驱元素和后继元素(除了第一个元素和最后一个元素外),但是在操作上与线性表不同,栈是一种操作受限的线性表,只允许在栈的一端进行插入和删除操作。栈可以用顺序存储结构和链式存储结构存储,采用顺序存储结构的栈称为顺序栈,采用链式存储结构的栈称为链式栈。栈的应用十分广泛,在表达式求值、括号匹配时常用到栈的思...原创 2011-04-29 14:06:48 · 195 阅读 · 0 评论 -
散列技术
1. 前言 散列方法不同于顺序查找、二分查找、二叉排序树及B-树上的查找。它不以关键字的比较为基本操作,采用直接寻址技术。在理想情况下,无须任何比较就可以找到待查关键字,查找的期望时间为O(1)。2. 散列表的定义 设所有可能出现的关键字集合记为U(简称全集)。实际发生(即实际存储)的关键字集合记为K(|K|比|U|小得多)。 散列方法是使用函数h将U映射到表T[0....原创 2011-07-27 14:26:51 · 173 阅读 · 0 评论 -
查 找
1. 前言 由于查找运算的使用频率很高,几乎在任何一个计算机系统软件和应用软件中都会涉及到,所以当问题所涉及的数据量相当大时,查找方法的效率就显得格外重要。在一些实时查询系统中尤其如此。因此,本章将系统地讨论各种查找方法,并通过对它们的效率分析来比较各种查找方法的优劣。 2. 查找的基本概念(1)查找表和查找 一般,假定被查找的对象是由一组结点组成的表(Table)...原创 2011-07-21 20:04:01 · 208 阅读 · 0 评论 -
图的遍历
与树类似,遍历也是图的一种重要的操作,图的遍历是访问图中每个顶点仅被访问一次的操作。图的遍历方式主要有两种:深度优先遍历和广度优先遍历。本节的主要学习内容包括图的深度优先遍历、图的广度优先遍历。 1. 图的深度优先遍历 深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则已w为心的出发点...原创 2011-07-12 23:48:50 · 157 阅读 · 0 评论 -
图——图的基础
1. 前言 图是一种非线性数据结构,是一种更为复杂的数据结构,在图中,数据元素之间时多对多的关系,即一个数据元素对应多个直接前驱和多个直接后继元素。图的应用领域十分广泛,如化学分析,工程设计、遗传学、人工智能等。2. 图的定义和相关概念 图是一种数据元素间为多对多关系的数据结构,加上一组基本操作构成的抽象数据类型。 数据对象V :V是具有相同特性的数据元素的集合,...原创 2011-06-08 15:39:32 · 275 阅读 · 0 评论 -
红黑树简介
一、红黑树介绍 红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和 Robert Sedgewick改成一个比较摩登的名字:红黑树。 二、红黑树与AVL树比较 红黑树AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而...原创 2011-09-08 15:35:19 · 166 阅读 · 0 评论 -
树——哈夫曼树
1.树的路径长度 树的路径长度是从树根到树中每一结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。2.树的带权路径长度(Weighted Path Length of Tree,简记为WPL) 结点的权:在一些应用中,赋予树中结点的一个有某种意义的实数。 结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。 树的带权路径长度(Weighted Pat...原创 2011-05-23 20:28:36 · 777 阅读 · 0 评论 -
树——树的转换
1. 树的存储结构 通常,树的存储结构有三种,双亲表示法、孩子表示法和孩子兄弟表示法。(1)双亲表示法 双亲表示法是利用一组连续的存储单元存储树的每个结点,并利用一个指示器表示结点的双亲结点在树中的位置。 树的双亲表示法存储表示描述如下: #define MaxSize 200typedef struct PNode /* 双亲表示...原创 2011-05-23 16:53:40 · 252 阅读 · 0 评论 -
树——线索二叉树
1. 前言 n个结点的二叉链表中含有n+1个空指针域。利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前趋和后继结点的指针(这种附加的指针称为"线索")。 这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded BinaryTree)。根据线索性质的不同,线索二叉树可分为前序线索二叉树、中序线索二叉树和后序线索二叉树三种。 注意:线索链...原创 2011-05-17 13:28:18 · 324 阅读 · 0 评论 -
树——二叉树的遍历
1. 前言 所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。2. 二叉树遍历的定义 二叉树的遍历过程其实也是将二叉树的非线性序列转换成一个线性序列的过程。二叉树是一种非线性结构,通过遍历二叉树,按照某种规律对二叉树中的每个结点进行访问,且仅访问一次,得到一个顺序序列。 从二叉树的...原创 2011-05-16 16:36:25 · 110 阅读 · 0 评论 -
树——二叉树基础
1. 前言 二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。 2. 二叉树的定义 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二...原创 2011-05-05 15:32:00 · 202 阅读 · 0 评论 -
树——基础
1. 前言 树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。 树结构在客观世界中是大量存在的,例如家谱、行政组织机构都可用树形象地表示。 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法的行为时,可用树来描述其执行过程。2. 树的定...原创 2011-05-05 15:30:57 · 241 阅读 · 0 评论 -
广义表
1. 广义表的定义 广义表(Lists,又称列表)是线性表的推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。 广义表是n(n≥0)个元素a1,a2,…,ai,…,an的有限序列。 其中: ①ai--或者是原子或者是一个广义表。 ②广义表通常记作: Ls=( a1,a2,…,ai,…,an)。 ③Ls是广义表的名字,...原创 2011-05-05 14:14:49 · 249 阅读 · 0 评论 -
矩阵的存储
1. 前言 矩阵是许多科学与工程计算中经常遇到的问题,在高级语言中,通常使用二维数组来存储矩阵。然而,在矩阵的算法中,往往会出现阶数很高的矩阵中存在许多相同的元素或值为零的元素。为了节约存储空间,需要将这些矩阵进行压缩存储。如果矩阵中的元素存在一定的规律,则称这种矩阵为特殊矩阵。如果矩阵中的元素有许多的零元素且不具有规律性,则称这种矩阵为稀疏矩阵。2. 特殊矩阵的压缩存储(1)对...原创 2011-05-04 14:25:13 · 1212 阅读 · 0 评论 -
串基础
1. 串的定义 串(或字符串)是一种重要的线性结构,计算机上的非数值处理对象基本上是字符串数据。字符串处理在文本编辑、信息检索等方面有着广泛的应用。串根据存储方式的不同可以分为顺序串、堆串和块链串。 串是由零个或多个字符串组成的有限序列。其中,含零个字符串的称为空串。串中的字符可以是字母数字或其他字符。串中任意个连续的字符组成的子序列称为串的子串。相应地,包含子串的串称为主串。串中...原创 2011-05-03 14:15:48 · 223 阅读 · 0 评论 -
队列基础
1. 队列的定义 队列是一种特殊的线性表,它包含一个队头(front)和一个队尾(rear),其中队头只允许删除元素,队尾只允许插入元素。队列的特定是先进入队列的元素先出来,即先进先出(FIFO)。出队列时,只有当前面的元素都退出之后,后面的元素才能退出。 ...原创 2011-04-30 20:55:17 · 147 阅读 · 0 评论 -
排 序
1. 排序的分类 在介绍有关排序的算法之前,先来介绍与排序相关的基本概念。本节主要介绍排序的基本概念及相关概念。排序:把一个无序的元素序列按照元素的关键字递增或递减排列为有序的序列。稳定排序和不稳定排序:在排列过程中,如果存在两个关键字相等即ki=kj(1≤i≤n,1≤j≤n,i≠j),在排序前对应的元素Ei在Ej之前。内排序和外排序:根据排序过程中,所利用的内存储器和外存...原创 2011-07-31 21:17:01 · 161 阅读 · 0 评论