
数据结构与算法
文章平均质量分 85
裂缝中的阳光JDG
研究方向:Android开发、ASR技术、linux系统移植与驱动开发
展开
-
01.数据结构概念与算法基础
数据结构概念与算法基础一、数据结构概念1.数据:是描述客观事务的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。2.数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被成为记录。比如畜类中,牛、马、羊都属于数据元素。3.数据项:一个数据元素可以由若原创 2014-12-28 20:18:06 · 1029 阅读 · 0 评论 -
16.二叉排序树
转载请表名出处:http://blog.youkuaiyun.com/u012637501一、二叉排序树 如果要查找的数据集是有序线性表且是顺序存储的,查找可以用折半、插值、斐波那契等查找算法来实现。然后,由于有序,当我们在插入和删除操作上,就需要耗费大量的时间。下面将要学习的二叉排序树,就是一种既可以使得插入和删除效率不错,又可以比较高效率地实现查找的算法。为此,构造一棵二叉排序树的目的并不是原创 2015-04-04 23:08:56 · 1188 阅读 · 0 评论 -
14.查找概论与顺序查找
一、查找概论1.查找:即根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或纪录)。若表中不存在关键字等于给定值的纪录,则称查找不成功,此时查找的结果可给出一个"空"纪录或"空"指针。另外,查找表按照操作方式来分有两大种:静态查找表和动态查找表。(1)查找表(Search table):是由同一类型的数据元素(或纪录)构成的集合;(2)关键字(Key):是数据元素中某个原创 2015-03-20 01:22:20 · 1178 阅读 · 0 评论 -
13.赫夫曼树及其应用
一、赫夫曼树定义与原理1.路径长度:从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称作路径的长度;2.树的路径长度:即从树根到每一结点的路径长度之和;3.结点的带权的路径长度:即从该结点从到树根之间的路径长度与结点上权的乘积;4.树的带权路径长度:为树中所有叶子结点的带权路径长度之和;5.赫夫曼树定义:假设有n个权值{w1,w2,....,wn},原创 2015-03-20 01:15:41 · 1150 阅读 · 0 评论 -
12.遍历二叉树与二叉树的建立
一、遍历二叉树1.定义 二叉树的遍历(travering binary tree)是指从根结点出发,按照某种次序依次访问二叉树中的所有结点,使得每个结点被访问一次且仅被访问一次。2.前序遍历(1)规则:若二叉树为空,则空操作返回。否则,先访问根结点,然后前序遍历左子树,再前序遍历右子树。(2)实例 前序遍历结果为:A BDGH CEIF分析:当原创 2015-03-20 01:03:06 · 1264 阅读 · 0 评论 -
11.二叉树基本理论
一、二叉树基本概念1.定义 二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(或称空二叉树),或者由一个根节点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。2.二叉树特点(1)每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点;(2)左子树和右子树是有顺序的,次序不能任意颠倒;(3)即使树中某节点只有一颗子树,也原创 2015-03-20 00:51:39 · 988 阅读 · 0 评论 -
10.树与树的存储结构
一、树1.树的定义:树是n(n>=0)个结点的有限集,其中n=0时称为空树。在任意一颗非空树中:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、...、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(Subtree)。注意:当m>0时,子树的个数没有限制,但它们一定是互不相交的。2.结点的度与树的度 树的结原创 2015-03-20 00:40:15 · 1027 阅读 · 0 评论 -
03.线性表(二)链式存储结构.单链表1
链式存储结构.单链表11.基本概念 为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)(1)数据域:存储线性表数据元素数据信息的域称为数据域;(2)指针域:把存储直接后继位置(下一个数据元素的地址)的域称为指针域,指针域中存储的信息为指针或链;(3)结点原创 2014-12-28 20:22:48 · 1080 阅读 · 0 评论 -
02.线性表(一)顺序存储结构
顺序存储结构一、线性表基本概念1.线性表定义 线性表(list)是指零个或多个数据元素的有限序列,所有数据元素为相同数据类型且一个数据元素可以由多个数据项组成。若将线性表记为(a1,..ai-1,ai,ai+1...,an),线性表元素的个数n(n>0,n=0时为空表)定义为线性表的长度,其中ai-1是ai 的直接前驱元素,ai+1是ai的直接后继元素。2.线性表的抽象数据类原创 2014-12-28 20:20:35 · 1166 阅读 · 0 评论 -
09.循环队列与链队列
一、队列与循环队列1.队列(1)队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(Fiirst In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。 从队列的定义可知,队列的入队操作,其实就是在队尾追加一个元素,不需要移动任何元素,因此时间复杂度为O(1)。队列的删除操作,与栈不同的原创 2015-01-09 22:14:15 · 1615 阅读 · 0 评论 -
07.栈(一)栈的存储结构及操作
一、栈1.栈(stack):是限定仅在表尾进行插入和删除操作的线性表。其中,允许插入和删除的一端被称为栈顶(top),另一端被称为栈底(bottom),不含任何数据元素的栈被称为空栈。栈又被称为后进先出(Last In First Out)的线性表,简称LIFO结构。 栈的插入操作为进栈,栈的删除操作为出栈。2.栈的抽象数据类型ADT 栈(stack)Data原创 2015-01-08 15:23:13 · 1198 阅读 · 0 评论 -
05.线性表(四)链式存储结构.静态链表
链式存储结构.静态链表 一、静态链表1.静态链表存储结构 单链表是通过指针实现的,但是我们也可以通过数组来代替指针描述单链表,即静态链表。如何实现静态链表?构造数组的元素由两个数据域组成:data和cur,即数组的每个下标都对应一个data和一个cur。数据域data:用来存放数据元素,即要处理的数据;游标cur:存放该元素的后继在数组中的下标,原创 2014-12-28 20:28:29 · 1200 阅读 · 0 评论 -
06.线性表(五)链式存储结构.循环链表与双向链表
循环链表与双向链表一、循环链表1.循环链表:将单链表中终端结点的指针域由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。升华笔记:如何判断循环链表和单链表? 循环链表和单链表的主要差异就在于循环的判断条件上,即p->next是否为空。如果最后一个结点的指指针域p->next为空则说明该链表为单链表;如果p->next等于原创 2014-12-28 20:30:18 · 775 阅读 · 0 评论 -
08.栈(二)栈的应用
一、栈的应用-递归1.递归函数:把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称为递归函数。2.栈与递归 递归函数实际是一个前行和退回的过程,相当与入栈、出栈。在前行阶段,对于每一层递归,函数的局部变量、参数值以及返回地址都被压入栈中。在退回阶段,位于栈顶的局部变量、参数值和返回地址被弹出(出栈),用于返回调用层次中执行代码的其余部分,也就是恢复了调用的状态。原创 2015-01-08 16:48:32 · 842 阅读 · 0 评论 -
04.线性表(三)链式存储结构.单链表2
链式存储结构.单链表2 顺序存储结构的创建实质是一个数组的初始化,存储空间连续且其大小和类型已经固定;单链表存储空间不连续,是一种动态结构且它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。一.单链表的整表创建 创建单链表的过程就是一个动态生成链表的过程,即从“空表”的初始化起,依次建立各元素结点,并逐个插入链表。1.算法思路原创 2014-12-28 20:25:17 · 1129 阅读 · 0 评论 -
15.有序表查找与线索索引查找
一、有序表查找1.折半查找/二分查找算法(1)基本思想:在顺序存储的有序表中,取中间纪录(a[mid]=key)作为比较对象,若给定值与中间纪录的关键字相等,则查找成功;若给定值小于中间纪录的关键字,则在中间纪录的左半区继续查找;若给定值大于中间纪录的关键字,则在中间纪录的右半边。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。(2)使用条件:线性表中的纪录是关键码原创 2015-04-04 23:01:20 · 1435 阅读 · 0 评论