数据结构与算法分析--java语言描述笔记
L@wang
吾生也有涯 而知也无涯
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2.1线性表类型的定义
线性表:表中每个数据元素最多只能有一个直接前趋元素,每个数据元素最多只能有一个直接后继元素;只有第一个元 素没有前去元素,最后一个元素没有后继元素。线性表的长度:就是表中记录数据的条数。原创 2017-08-04 15:03:34 · 373 阅读 · 0 评论 -
4.1多维数组
数组是数据结构的基本结构形式,它是一种顺序式的结构。数组是存储同一类型的数据的数据结构数组的大小和存储数据的数据类型要确定数组分一维数组和多维数组,它的维数是由数组下标的个数确定的一维数组的数据存储按照顺序存储,逻辑地址和物理地址都是连续的。二维数组在顺序存储时一般有两种:行优先顺序:存储是先按行从小到大的顺序存储,在每一行中按列号从小到大存储列优先顺序:存储时原创 2017-08-14 10:37:05 · 297 阅读 · 0 评论 -
4.2矩阵的存储
1.矩阵的压缩存储所谓矩阵的压缩存储,也就是在存储矩阵时,尽量减少存储空间,但是数组中的每个元素必须存储。矩阵的压缩存储仅是针对特殊矩阵的,对于没有规律可循的二维数组则不能够使用矩阵的压缩存储。二维数组(矩阵)的压缩存储一般有三种:对称矩阵、稀疏矩阵和三角矩阵。稀疏矩阵:矩阵中数据元素是0的元素占大部分原创 2017-08-14 10:37:46 · 502 阅读 · 0 评论 -
4.3广义表
广义表是线性表的扩展,具体定义为n(n³0)个元素的有限集合。其中元素有以下两种类型:一个原子元素(指不可再分割的元素)一个可以再分割的元素(或称为一个子表)如果所有元素是原子元素,则称为线性表,如果含有子表,则是广义表。n的值是广义表的长度,如果n=0,称广义表为空表。广义表中含有元素的个数称为广义表的长度,广义表中含有的括号对数称为广义表的深度。列表的3个重要结论:原创 2017-08-14 10:39:09 · 431 阅读 · 0 评论 -
5.1树的概念
树,用递归定义为:树是N(N>0)个结点的有限集合。其中唯一关系具有下列属性:集合中存在唯一一个结点,称为树根,该结点没有前趋;除根节点外,其余结点分为M(M≥0)个互不交集的集合,其中每一个集合都是一棵树,并称其为根的子树。采用子树的概念递归定义树为:树是由根节点和若干棵子树构成的。树的表示方法:树型表示法、文氏图表示法、凹入图表示法、广义表表示法。一个结点的子树的个数称为该原创 2017-08-14 10:42:06 · 417 阅读 · 0 评论 -
5.2二叉树
二叉树是由n(n大于等于0)结点组成的有限集合,此集合或者为空,或者由一个根结点加上两棵分别称为左右子树的,互不相交的二叉树组成。二叉树与一般树的区别:二叉树可以为空树,即不包含任何结点;一般树至少应有一个结点。二叉树区别于度数为2的有序树,在二叉树中允许某些结点只有右子树而没有左子树;而有序树中,一个结点如果没有第一子树就不可能有第二子树的存在。二叉树并非树的特殊情形,二叉树原创 2017-08-14 10:43:46 · 315 阅读 · 0 评论 -
5.3二叉树的存储结构
二叉树的存储结构:顺序存储结构和链接存储结构二叉树顺序存储的原则是:不管给定的二叉树是不是完全二叉树,都看做完全二叉树 ,即按照完全二叉树的层次次序(从上到下,从左到右)把各结点依次存入数组中。二叉树的链接存储结构中每个结点由数据域和指针域两部分组成二叉树的每个结点的指针域有两个,一个指向左儿子,一个指向右儿子。此时还需一个链表的头指针指向根结点。二叉树的实现原则:以第原创 2017-08-14 10:44:56 · 394 阅读 · 0 评论 -
5.5二叉树的遍历
二叉树的遍历是以递归的方式进行,依递归的调用顺序不同,可分为3中不同的遍历方式:前序遍历、中序遍历和后序遍历的方法遍历是抽取数据结构中的各个数据值二叉树的遍历是以固定的顺序系统的抽取二叉树中的各结点,且每个结点均恰好被抽取一次二叉树的前序遍历(Preorder Traversal)是先遍历根结点,再遍历左子树,最后才遍历右子树。即若二叉树非空,则依次进行如下操作:1.访原创 2017-08-14 10:47:19 · 249 阅读 · 0 评论 -
5.6线索二叉树
二叉树是非线性结构,所以树中的结点不存在前趋和后继的概念,但当我们对二叉树进行某种遍历后,就可以得到二叉树中所有结点的一个线性序列,在这种意义下,二叉树中的结点就有了前趋结点和后继结点。原创 2017-08-14 10:48:10 · 260 阅读 · 0 评论 -
5.7树和二叉树的转换及树的存储结构
将一棵树转换成二叉树的方法:1.树中所有相邻兄弟之间加一条连线;2.对树中的每个结点,只保留它与第一个儿子结点之间的连线,删去它与其他儿子结点之间的连线。3.依树的根结点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明将一棵二叉树还原为树的方法:1.若某结点是其双亲的左儿子,则把该结点的右儿子、右儿子的右儿子、…都与该结点的双亲结点用线连接起来;2.删掉原二叉树中所原创 2017-08-14 10:49:02 · 470 阅读 · 0 评论 -
1.7算法
1、算法及其性质算法是指解决问题的一种方法或者一个过程。流程图是图形化的算法程序是用计算机语言描述的算法一个完整的算法应满足以下几条性质(五个):正确性、确定性、有穷性、输入、输出程序=算法+数据结构2、算法描述的分析设计一个好的算法通常应考虑达到的目标(4个):正确性、可读性、健壮性、效率与低存储量需求时间复杂度:记作O(n),n是原创 2017-07-28 11:29:29 · 418 阅读 · 0 评论 -
1.6Java语言概述
面向对象的程序设计Java是一种面向对象的程序设计语言,在该语言中:每个数据项均封装在某个对象中每条可执行的语句均由某个对象来完成每个对象均是某个类的实例或是一个数组每个类均在一个单继承的层次结构中定义Java中的单继承层次结构是一种树型结构,它的根是Object类。Java面型对象的特点是的它特别适合用于数据结构的设计和实现,为程序员提供了很好的开发平台。Ja原创 2017-07-28 11:27:55 · 246 阅读 · 0 评论 -
1.5学习数据结构的意义
数据结构包括逻辑结构、存储结构和算法解决问题的关键:选择合适的数据结构表示问题,然后写出有效的算法。原创 2017-07-28 11:26:29 · 284 阅读 · 0 评论 -
2.2线性表的顺序表示和实现
线性表的存储结构分为顺序结构和非顺序结构。顺序结构也称为向量存储或一维数组存储。线性表的第一个数据元素的位置叫 起始位置 或 基地址使用顺序结构存储的表叫做顺序表,特点:表中相邻的元素之间具有相邻的存储位置。原创 2017-08-04 15:08:25 · 327 阅读 · 0 评论 -
2.3线性表的链式存储结构
链式存储:不要求逻辑上相邻的数据元素在物理位置上也相邻。单向链表:结点中的指针域只有一个沿着同一个方向表示的链式存储结构。对于链式分配线性表,整个链表的存取必须是从头指针开始,头指针指示链表中第一个结点的存储位置。同时由于最后一个数据元素,没有直接后继,则线性链表中最后一个结点的指针为空(null)。使用单向链表时必须完成三步:创建一个新的结点为该结点赋一个新值,将原创 2017-08-04 15:11:05 · 423 阅读 · 0 评论 -
2.4顺序表和链表的比较
线性表的存储有两种:顺序存储表和链式存储表顺序存储结构一般要求数据存放的物理和逻辑地址连续;链式存储结构数据存放地址可连续可不连续在线性表长度没有确定的情况下,一般采用链式存储结构比较好,反之应以顺序存储结构为主。一般选择存储结构时可以主要从以下两个方面考虑:基于空间的考虑基于时间的考虑原创 2017-08-04 15:13:12 · 267 阅读 · 0 评论 -
3.1栈
栈(stack)又称堆栈,是限制在表的一端进行插入和删除运算的线性表。通常称能够进行插入、删除运算的这一端为栈顶(Top),另一端为栈底(Bottom).表中没有元素是为空栈。删除---退栈---弹出(Pop),删除的总是最新的元素(栈顶元素)插入---进栈---压入(Push),压入的总是最新的元素。栈满时,进栈称为“上溢”栈空时,退栈称为“下溢”堆栈的存储结构:原创 2017-08-04 15:15:19 · 357 阅读 · 0 评论 -
3.2队列
队的操作是在两端进行,其中一端只能进行插入,该端称为队列的队尾,而另一端只能进行删除,该端称为队列的队首。入队操作又称为队列的插入,出队操作又称为队列的删除,队列的操作规则:先进先出FIFO(first in first out)队列的存储具有顺序存储和链式存储两种。队列的顺序存储结构称为顺序队列,顺序队列实际上就是运算受限的顺序表原创 2017-08-04 15:17:35 · 262 阅读 · 0 评论 -
1.1什么是数据结构
计算机是一种信息处理装置信息中的各个数据元素不是孤立存在的他们之间存在着一定的结构关系数据结构中数据之间的关系有两种:线性关系和非线性关系非线性关系包括两种:树形关系和图关系逻辑结构和存储结构线性关系:与每一个数据单位相邻的前一个数据单位最多只能有一个(第一个数据单位没有),与每一个数据单位相邻的后一个数据单位最多只能有一个(最后一个数据单位没有)。原创 2017-07-27 10:46:30 · 394 阅读 · 0 评论 -
1.2数据结构的历史和在计算机学科中的地位
数据结构作为单独的一门课程始于1968年在我国是指20世纪80年代初早起没有明确的规范,数据结构几乎和图论、树的理论相同随着大型程序的出现、软件的独立结构程序设计慢慢的称为程序设计方法学的主要内容数据结构目前已经成为高等教育的重点课程之一、是计算机类专业的重要专业基础课程数据结构是介于数学、计算机硬件和计算机软件之间的一门核心课程。原创 2017-07-27 10:48:46 · 4138 阅读 · 0 评论 -
1.3概念和术语
数据在计算机学科中是指输入到计算机中并能够被计算机识别、存储和加工处理的符号的总称。数据元素是数据的基本单位,通常把数据元素作为一个整体进行考虑和处理。数据元素通常可以理解为逻辑意义上的数据的基本单位,而不是物理意义上的基本数据单位。数据元素可由一个或者多个数据项组成。数据的基本物理单位是数据项。数据项(或数据元素)是指具有独立含义的最小识别单位(数据中不可分割的最原创 2017-07-27 14:46:06 · 384 阅读 · 0 评论 -
1.4抽象数据类型和数据结构
数据类型是指一个值的集合以及在这些值上定义的一组操作的总称抽象数据类型(Abstract Data Type,ADT)是指抽象数据组织和与之相关的操作每一个操作由它的输入输出定义隐藏实现细节的过程称为封装数据结构是ADT的物理实现抽象的意义在于数据类型的数学抽象特性ADT使用伪码描述为:ADT抽象数据类型名{数据对象:数据关系:基本操原创 2017-07-27 14:51:22 · 665 阅读 · 0 评论 -
5.8哈夫曼树及其应用
哈夫曼树的基本概念:路径和路径的长度:在一棵树中,从一个结点往下可以达到的孩子或子孙结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1结点的权及带权路径长度:若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权 结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积原创 2017-08-14 10:49:54 · 397 阅读 · 0 评论
分享