随笔分类 -  数据结构与算法

摘要:一、二叉树的遍历的定义 1.二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问依次且仅被访问依次。树的结点之间不存在唯一的前驱和后继关系,在访问一个结点后,下一个被访问的结点面临着不同的选择,因此,二叉树有多种遍历方 阅读全文
posted @ 2018-06-21 16:11 BigJunOba 阅读(1395) 评论(0) 推荐(0)
摘要:一、二叉树的定义 1.二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。 2.二叉树的特点: 每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。 左子树和右子树是有 阅读全文
posted @ 2018-06-21 15:51 BigJunOba 阅读(657) 评论(0) 推荐(0)
摘要:一、树的定义 1.树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、...Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree 阅读全文
posted @ 2018-06-21 11:34 BigJunOba 阅读(511) 评论(0) 推荐(0)
摘要:一、数组的定义:数组是n(n>=1)个相同数据类型的数据元素构成的占用一块地址连续的内存单元的有限集合。所有的线性结构(包括线性表、堆栈、队列、串、数组和矩阵)的顺序存储结构实际上就是使用数组来存储。可见,数组是其他数据结构实现存续存储结构的基础,数组这种数据结构是软件设计中最基础的数据结构。 二、 阅读全文
posted @ 2018-06-20 18:00 BigJunOba 阅读(1105) 评论(0) 推荐(0)
摘要:一、模式匹配 串的查找定位操作(也称为串的模式匹配操作)指的是在当前串(主串)中寻找子串(模式串)的过程。若在主串中找到了一个和模式串相同的子串,则查找成功;若在主串中找不到与模式串相同的子串,则查找失败。两种主要的模式匹配算法是Brute Force算法和KMP算法。 二、Brute Force算 阅读全文
posted @ 2018-06-19 20:44 BigJunOba 阅读(1628) 评论(0) 推荐(0)
摘要:一、串的定义:串(String)是由零个或多个字符组成的有限序列,又名叫字符串。 二、串中的字符数目n称为串的长度,零个字符的串称为空串(null string),它的长度为零。子串在主串中的位置就是子串的第一个字符在主串中的序号。 三、串的大小:首先比较每个字符对应的ASCII码,然后比较长度n。 阅读全文
posted @ 2018-06-19 20:33 BigJunOba 阅读(5502) 评论(0) 推荐(0)
摘要:一、队列的链式存储结构:其实就是线性表的单链表,只不过它只能尾进头出而已,简称为链队列。 二、将队头指针front指向链队列的头结点,队尾指针rear指向终端结点。空队列时,front和rear都指向头结点。 三、在可以确定队列长度最大值的情况下,建议用循环队列,如果无法估计预估队列的长度,则用链队 阅读全文
posted @ 2018-06-15 16:48 BigJunOba 阅读(992) 评论(0) 推荐(0)
摘要:一、队列:队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。 二、队列在程序设计中的应用:键盘输入、操作系统多个程序因需要通过一个管道输出而按先后次序排队等 阅读全文
posted @ 2018-06-15 16:46 BigJunOba 阅读(4854) 评论(0) 推荐(0)
摘要:一、汉诺塔问题描述 设有三根标号为A,B,C的柱子,在A柱子上放着n个盘子,每个逗比下面的略小一点,要求把A上的盘子全部转移到C上,移动的规则是:①一次只能移动一个盘子;②移动过程中大盘子不能放在小盘子上面;③在移动过程中盘子可以放在A,B,C的任意一个柱子上。 二、用递归方法求解n个盘子的汉诺塔问 阅读全文
posted @ 2018-06-15 16:16 BigJunOba 阅读(613) 评论(0) 推荐(0)
摘要:一、递归的定义 在高级语言中,调用自己和其他函数并没有本质的不同。把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数。 递归算法求解问题的基本思想是:对于一个较为复杂的问题,把原问题分解成若干个相对简单且类似的子问题,这样较为复杂的原问题就变成了相对简单的子问题;而简单到一定 阅读全文
posted @ 2018-06-15 16:15 BigJunOba 阅读(1692) 评论(0) 推荐(0)
摘要:一、大数加法的定义 在Java中,整数类型有四种,byte(8位)、short(16位)、int(32位)、long(64位)。 其中,int类型为32为,也就是说最大的整数为2^31,如果超过了这个数,那么就不能再用整型变量来保存,更不用说保存两个这么大的数的和了。 大数就是值超过整数最大上限的数 阅读全文
posted @ 2018-06-15 16:14 BigJunOba 阅读(790) 评论(0) 推荐(0)
摘要:一、逆波兰表达式的定义 算数表达式是由操作数、算数运算符和分隔符所组成的式子。 表达式一般有中缀表达式、后缀表达式和前缀表达式,其中,中缀表达式是将运算符放在两个操作数的中间,后缀表达式(也称逆波兰表达式)是将运算符放在两个操作数之后,而前缀表达式是将运算符放在两个操作数之前。 例如,中缀表达式A+ 阅读全文
posted @ 2018-06-14 15:49 BigJunOba 阅读(595) 评论(0) 推荐(0)
摘要:一、栈的链式存储结构,简称为链栈。思路就是把栈顶放在单链表的头部,通常对于链栈来说,是不需要头结点的。 二、链栈基本不存在栈满的情况,除非内存已经没有可以使用的空间。对于空栈来说,链表原定义是头指针指向空,那么链栈的空其实就是top=NULL。 三、栈的链式存储结构的C语言代码实现: 四、栈的链式存 阅读全文
posted @ 2018-06-14 15:48 BigJunOba 阅读(2669) 评论(0) 推荐(1)
摘要:一、栈的顺序存储的一个很大的缺陷就是必须事先确定数组存储空间大小,万一不够用了,就要用编程手段来扩展数组的容量,非常麻烦。 二、对于一个栈,也只能尽量考虑周全,设计出合适大小的数组来处理;但是对于两个相同类型的栈,可以做到最大限度地利用其事先开辟的存储空间来进行操作。 三、如果有两个相同类型的栈,为 阅读全文
posted @ 2018-06-14 15:43 BigJunOba 阅读(2586) 评论(0) 推荐(0)
摘要:一、栈的定义(类似弹夹中的子弹,先进后出,后进先出) 1.栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 2.把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结 阅读全文
posted @ 2018-06-14 15:33 BigJunOba 阅读(909) 评论(0) 推荐(0)
摘要:一、静态链表 1.静态链表:用数组描述的链表叫做静态链表。C语言中,让数组的元素都是由两个数据域组成,data和cur。数组的每个下标都对应着一个data和一个cur。数据域data,用来存放数据元素,也就是要处理的数据;而cur相当于单链表中的next指针,存放该元素的后继在数据中的下标,把cur 阅读全文
posted @ 2018-06-12 17:30 BigJunOba 阅读(772) 评论(0) 推荐(1)
摘要:一、线性表的顺序存储结构的不足:线性表的顺序结构最大的缺点就是插入和删除时需要移动大量元素,这显然就需要耗费时间。原因就在于相邻两元素的存储位置也具有邻居关系。它们编号是1,2,3...n,它们在内存中的位置也是挨着的吗,中间没有空隙,当然就无法快速插入,而删除后,当中就会留出空隙,自然需要弥补。 阅读全文
posted @ 2018-06-12 17:28 BigJunOba 阅读(1442) 评论(0) 推荐(0)
摘要:一、线性表的定义:线性表就是零个或多个数据元素的有效序列。 二、线性表的顺序存储结构 1.定义:指的是用一段地址连续地存储单元依次存储线性表的数据元素。 2.顺序存储方式:线性表的每个数据元素的类型都相同,所以可以用一维数组来实现顺序存储结构,即把第一个数据元素存到数组下标为0的位置中,接着把线性表 阅读全文
posted @ 2018-06-12 17:27 BigJunOba 阅读(2203) 评论(0) 推荐(0)
摘要:一、算法基础 1.算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 2.算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。 (1)输入输出:算法具有零个或多个输入,但是至少有一个或多个输出。 (2)有穷性:指算法在执行有限的步骤之后,自动结束 阅读全文
posted @ 2018-06-12 16:11 BigJunOba 阅读(250) 评论(0) 推荐(0)
摘要:一、数据结构基础 1.数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 2.程序设计 = 数据结构 + 算法 3.数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。 4.数据元素:是组成数据的、有一 阅读全文
posted @ 2018-06-12 15:16 BigJunOba 阅读(411) 评论(0) 推荐(0)