
数据结构
文章平均质量分 81
jiashuai94
一个持之以恒的Android程序猿
展开
-
数据结构笔记——线性表(中)
线性表的链式存储结构1、线性表链式存储结构定义先看个图线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。这就意味着,这些数据元素可以存在内存未被占用的任意位置。以前的顺序存储结构中,每个数据元素只需要存储数据元素就可以了。现在链式结构中,处理要存储数据元素信息之外,还要存储它的后继元素的存储地址。为了表示每...原创 2018-03-07 21:12:59 · 347 阅读 · 0 评论 -
数据结构——遍历二叉树
二叉树遍历原理二叉树的遍历:是指从根结点出发,按照某种次序依次访问二叉树中的所有结点,使得每个结点被访问一次且仅被访问一次。这里有两个关键词:访问和次序。访问其实是要根据实际的需要来确定具体做什么,比如对每个结点进行相关计算,输出打印等。它算作是一个抽象操作。二叉树的遍历次序不同于线性结构,最多也就是从头到尾、循环和双向等简单的遍历方式。树的结点之间不存在唯一的前驱和后继关系,在访...原创 2018-06-20 16:39:06 · 615 阅读 · 0 评论 -
数据结构——图相关基本概念
在线性表中,数据元素之间是被串联起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中的多个元素相关,但只能和上一层中的一个元素相关。可是现实生活中,好多关系不再是一对一或一对多,比如人和人之间的关系,会互相认识,就要考虑多对多的情况。这就是今天要介绍的——图。图是一种较线性表和树更加复杂的数据结...原创 2018-06-22 14:47:51 · 563 阅读 · 0 评论 -
数据结构——树、森林与二叉树的转换
在介绍树的存储结构时,就说到了树的孩子兄弟表示法可以将一棵树用二叉链表进行存储,所以借助二叉链表,树和二叉树可以互相转换。从物理结构上来看,它们的二叉链表也是相同的,只是介绍不太一样而已。因此,只要我们设定一定的规则,用二叉树来表示树,甚至表示森林都是可以的,森林和二叉树也可以互相进行转换。树转换为二叉树将树转换为二叉树的步骤如下:加线:在所有的兄弟结点之间加一条连线;去线:对树中...原创 2018-06-21 14:31:31 · 5612 阅读 · 0 评论 -
数据结构——二叉树的存储结构
之前已经谈过了树的存储结构,并且说到顺序存储对树这一种一对多的关系的结构实现起来比较困难。但是二叉树是一种特殊的树,由于它的特殊性,使得用顺序存储结构也可以实现。二叉树的顺序存储结构二叉树的顺序存储结构就是用一维数组存储二叉树中的结点,并且结点的存储位置,也就是数组的下标,要能体现结点之间的逻辑关系,如双亲与孩子的关系,左右兄弟的关系等。先来看完全二叉树的顺序存储,一棵完全二叉树如图所...原创 2018-06-21 10:28:17 · 2312 阅读 · 0 评论 -
数据结构笔记——二叉树的定义和性质
在一些电视节目中,会猜测商品价格,有的人是一点一点的数字累加,这样的策略效率太低了。其实有一种经典的折半查找算法,就类似于我们今天要说的二叉树。二叉树定义二叉树:是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。如下图就是一个二叉树:二叉树特点二叉树的特点有:...原创 2018-05-01 18:19:39 · 1183 阅读 · 0 评论 -
数据结构笔记——串
枯眼望遥山隔水, 往来曾见几心知? 壶空怕酌一杯酒, 笔下难成和韵诗。 途路阻人离别久, 讯音无雁寄回迟。 孤灯夜守长寥寂, 夫忆妻兮父忆儿。这是宋代的李昱写的一首想念妻子和儿子的诗句,突然发现,这首诗竟然可以倒过来读。。。这种诗叫做回文诗。在英语单词中也有神奇的地方:“即使是lover中也有个over,即使是friend也有个end,即使believe中也有个lie。”你会...原创 2018-04-05 16:24:20 · 695 阅读 · 1 评论 -
数据结构笔记——树的基本概念
树的定义之前一直介绍的是一对一的线性结构,可现实中还有多一对多的情况需要处理,这就是今天要介绍的一对多的数据结构——树。树(Tree):是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:有且仅有一个特定的称为根(Root)的结点;当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、···、Tm,其中每一个集合本身又是一颗树,并且...原创 2018-04-15 21:21:56 · 912 阅读 · 0 评论 -
数据结构笔记——队列
定义队列(Queue):是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的线性表。允许插入的一端称为队尾,允许删除的一端称为队头。如下图所示:循环队列线性表有顺序存储和链式存储,栈是线性表,所以有这两种存储方式。同样,队列作为一种特殊的线性表,也同样存在这两种存储方式。队列顺序存储的不足假设有一个队列有n个元素,则顺序存储的队列...原创 2018-03-25 21:56:12 · 344 阅读 · 0 评论 -
数据结构笔记——线性表(下)
了解过线性表的链式存储结构以后,有人就想出来用数组来代替指针,来描述单链表。看看他们是怎么做到的。静态链表让数组的元素都由两个数据域组成,data和cur。也就是说,数组的每个下标都有对应的一个data和cur。数据域data,用来存放数据元素,而cur相当于单链表中的next指针,存放该元素的后继在数组中的下标,我们把cur叫做游标。这种用数组描述的链表叫做静态链表,我们把这种描...原创 2018-03-14 14:26:21 · 214 阅读 · 0 评论 -
数据结构笔记——栈
定义栈(stack):是限定仅在表尾进行插入和删除操作的线性表。我们允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称作后进先出(Last In First Out)的线性表。这里应该注意,栈是一种特殊的线性表。栈的特殊之处在于限制了线性表的插入和删除的位置。栈是线性表,那么就具有线性关系,即前驱后继关系。栈底是固定的,...原创 2018-03-22 22:41:49 · 265 阅读 · 0 评论 -
数据结构笔记——线性表(上)
线性表:零个或多个数据元素的有限序列。线性表的定义线性表,从名字上可以感觉到,是具有像线一样的性质的表。官方定义: 线性表(List):零个或多个数据元素的有限序列。注意;首先它是一个序列。也就是说,元素之间是有序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素有且只有一个前驱和后继。线性表强调有限,元素个数是有限的。其结构如下图:...原创 2018-03-05 09:05:38 · 304 阅读 · 0 评论 -
数据结构笔记——算法
算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个步骤。算法定义指令:能被人或者计算机装置执行。算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表达一个或者多个步骤。算法的核心在于有限的指令序列。算法的特性1、输入输出算法具有零个或者多个输入。算法至少要有一个或多个输出...原创 2018-02-28 23:45:37 · 327 阅读 · 0 评论 -
数据结构笔记——总述
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。介绍一个很常见的公式: 程序设计 = 数据结构 + 算法基本概念和术语1、数据数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。2、数据元素数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体...原创 2018-02-27 21:32:53 · 311 阅读 · 0 评论 -
数据结构系列全集
数据结构是互相之间存在一种或多种特定关系的数据元素的集合,数据结构不止研究数据元素,还研究它们之间的关系。从去年到现在,隔三差五,一共整理了14篇数据结构文章,但水平有限,文章中可能有不足或者不对的地方,希望大家直接评论提出,也欢迎拍砖。数据结构学习笔记——总述数据结构学习笔记——算法数据结构学习笔记——线性表(上)数据结构学习笔记——线性表(中)数据结构学习笔记——线性表(下)...原创 2018-07-02 18:54:33 · 823 阅读 · 0 评论