
数据结构和算法
文章平均质量分 54
yatesChiang
这只是我的学习笔记,仅供复习和记录使用!!!
展开
-
递归算法
概述程序调用自身的编程技巧称为递归( recursion),通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归有直接递归和间接递归。直接递归:函数在执行过程中调用本身。 间接递归:函数在执行过程中调用其它函数再经过这些函数调用本身。递归算法的特性:(1)必须有可最终达到的终止条件,否则程序将陷入无穷循环;(2)子问题在规模上比原问题小,或更接近终止条件;(3)子问题可通原创 2015-09-25 11:45:59 · 569 阅读 · 0 评论 -
线性表之单链表
顺序表在进行插入和删除操作需要移动大量元素,而且当线性表长度变化较大时,难以确定存储空间的容量,造成存储空间的碎片。一、单链表的存储结构所有的元素都不用考虑相邻位置,哪里有空位就到哪里,只要让每个元素存储后继元素的内存地址,这样就可以在第一个元素知道第二个元素的位置。我们把存储数据的域叫做数据域,存储位置的域叫做指针域,指针域中存储的信息叫做指针或链,这两部分信息组成了一个结点。每个结点只包含一个指原创 2015-09-23 16:44:00 · 721 阅读 · 0 评论 -
栈
一、栈的定义栈(stack)是限定尽在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端成为栈顶(top),另一端成为栈底(bottom)。栈又称为后进先出(LIFO)的线性表。进栈和出栈操作: 3个整形数字元素1,2,3依次进栈,会有5种出栈次序: 用数组来实现栈,栈顶top的表示:原创 2015-09-25 17:04:58 · 519 阅读 · 0 评论 -
队列
一、队列概述队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。允许插入的一端称为队尾,允许删除的一端称为队头。队列特点:先进先出(FIFO)队列的结构: 二、Java实现顺序循环队列引入两个指针,front指向队头,rear指向队尾元素的下一个位置,front等于rear时,是空队列。a1,a2出列,再入队a5这时,rear会移动到数组之外,如果再入队一个元素,就会产生数组越界的错误原创 2015-09-28 15:09:33 · 575 阅读 · 0 评论 -
树
一、定义树(Tree)是n(n≥0)个结点的有限集,n=0时,称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点(2)当n>1时,其余结点可以划分为m(m>0)个互不相交的有限集T1、T2 、…、Tm,每个集Ti(1≤i≤m)均为树,且称为树T的子树(SubTree)。下图的T1和T2是结点A的子树,E、J组成的树是C为结点的子树二、基本术语结点:存储数据元素和指向子树的原创 2015-09-29 10:47:00 · 572 阅读 · 0 评论 -
冒泡排序算法
冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。举个例子:对3,6,4,7,9,1进行冒泡排序第一次冒泡 3和6是第一对相邻的元素,第二原创 2015-09-21 16:57:19 · 781 阅读 · 0 评论 -
数据结构和算法导论
一、数据结构基本概念和术语数据:数据是对客观事物的符号表示。在计算机科学中其含义是指所有能够输入到计算机中并被计算机程序处理的符号集合。数值,声音,图像等都是数据。数据元素:数据元素是数据集合中的一个实体,是计算机程序中加工处理的基本单位。人类的数据元素就是一个人。数据项:一个数据元素可以由若干个数据项组成。比如人这样的数据元素,可以由眼、耳、口、鼻等数据项组成。数据对象:是具有相同性质的数据元素的原创 2015-09-24 13:32:27 · 1430 阅读 · 0 评论 -
线性表之顺序表
线性表:零个或多个数据元素的有限序列。有直接前驱,有直接后继。所以移除或插入元素后,相应的元素要进行位置变动,以保证没有空白项。 线性表的抽象数据类型: ADT 线性表(List)Data线性表的数据对象集合为{ a1, a2, … , an },每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且仅有一个直接前驱元素;除了最后一个元素an外,每一个元素有且只有一个直接原创 2015-09-22 16:09:12 · 473 阅读 · 0 评论 -
线性表之双向循环链表
一、循环链表将单链表的终端结点的指针端由空指针改为指向头结点,就使整个单链表形成了一个环,这种头尾相连的单链表称为单循环链表。单循环链表和单链表的主要差异就在于循环的判断条件上,原来是判断p->next是否为空,现在是判断p->next是否为头结点。除此之外,还有多重链的循环链表——将表中结点链在多个环上。判断空链表的条件是 head==head->next; rear==re原创 2015-09-24 16:42:32 · 742 阅读 · 0 评论