
数据结构与算法
jackson_fighting
java 任重道远
展开
-
数据结构与算法系列-算法的特征、要求、评价
算法的特性:输入:一个算法可以有0个或多个输入量输出:一个或多个输出量有穷性、确定性、可行性 算法的设计要求:正确性 、可读性、健壮性、高效性 算法的评价:时间效率:一个算法中语句重复执行的次数叫做语句频度算法中基本操作重复执行的次数依据算法中最大语句频度来计算,她是问题规模n的某个函数f(n),算法的时间量度记作T(n) = O(f(n)).成为时间复原创 2013-11-10 15:12:53 · 1092 阅读 · 0 评论 -
数据结构与算法系列-图
图G由两个集合V和E组成,记为: G=(V,E) 其中: V是顶点的有穷非空集合, E是V中顶点偶对(称为边)的有穷集。 通常,也将图G的顶点集和边集分别记为V(G)和E(G)。E(G)可以是空集。若E(G)为空,则图G只有顶点而没有边。图有两种存储结构:邻接矩阵和邻接表 邻接矩阵: ① 用邻接矩阵表示顶点间的相邻关系转载 2014-05-29 15:20:44 · 820 阅读 · 0 评论 -
数据结构与算法系列-树-二叉树的遍历(按层次遍历)
按层次遍历算法按层次遍历就是按二叉树层次从上而下,从左到右顺序访问其各结点算法思想:建立一循环队列,队列元素为指针类型变量,此循环队列用来暂存二叉树结点的指针。在遍历二叉树之前,先将此树的根节点指针送入循环队列,开始层次遍历时再将此根节点指针出队来访问根节点,然后判断其左或右儿子是否存在,若存在,则将左右儿子结点的指针依次送入队列。左儿子指针先于右儿子指针入队。#inclu原创 2013-11-12 20:37:54 · 3132 阅读 · 0 评论 -
数据结构与算法系列-树-二叉树存储结构
顺序存储结构顺序存储结构对完全二叉树而言,既简单又节省存储空间。但是,对于一般二叉树的数序存储,为了能用结点在一维数组中的相对位置来表示结点之间的逻辑关系,也必须按照完全二叉树的形式来存储树中的节点,造成存储空间浪费。二叉链表二叉树一般采用二叉链表作为链式存储结构。在这种存储方式下,二叉树的每个结点包括三个成员。lchild(指向该结点左孩子的指针)da原创 2013-11-12 20:26:04 · 1389 阅读 · 0 评论 -
数据结构与算法系列-树-二叉树的遍历(先序、中序、后序)
DLR:先序遍历(Perorder Traverse,也叫做前序遍历)访问根节点的操作发生在遍历其左右子树之前。 顺序为 根-左-右LDR 中序遍历 (Inorder Traverse)访问根节点的操作发生在遍历其左右子树之中 。 顺序为 左-根-右LRD 后序遍历(Postorder Traverse)访问根节点操作发生在遍历其左右子树之后 。 顺原创 2013-11-12 20:35:51 · 1163 阅读 · 0 评论 -
数据结构与算法系列-树-二叉树的定义与性质
定义:二叉树是另一种特殊的树形结构,它的特点是每个结点至多有两个子树。(即二叉树中不存在度大于2的树),二叉树的子树有左右之分,其次序不能颠倒。是结点的有限集合,这个集合可以为空集或者是由一个根节点和两颗互不相交的分别称为这个根节点的左右子树的二叉树组成。二叉树的性质性质1 二叉树第i层上的结点数目最多为2i-1(i≥1)。证明:用数学归纳法证明:原创 2013-11-12 20:14:55 · 1199 阅读 · 0 评论 -
数据结构与算法系列-树-数的基本概念
树的定义树形结构是一类重要的非线性结构,树是以分支关系定义的层次结构。它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有前驱的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为m个不相交的子树;(来自维基百科)原创 2013-11-12 19:59:00 · 1595 阅读 · 0 评论 -
数据结构与算法系列-串-串的基本操作
#include#include#define MAXLEN 25typedef struct string{ char ch[MAXLEN]; int len;}STRING;STRING connect(STRING s1,STRING s2)//串连接{ STRING s; int i; if(s1.len + s2.len <=MAXLEN) { for(i原创 2013-11-11 11:35:00 · 1258 阅读 · 0 评论 -
数据结构与算法系列-串-串的基本概念与存储结构
串的基本概念串是一种特殊的线性表,他的数据对象是字符集和,它的每个元素都是一个字符一系列相连的字符就组成了一个字符串,简称串串的描述:s = "a1a2a3..........an" (n >= 0);(n称为串的长度)串的存储结构线性表的顺序存储结构和链式存储结构对于串来说都是适用的。静态存储结构串的静态存储结构采用顺序存储结构,简称顺序串。描述:type原创 2013-11-11 11:34:12 · 1618 阅读 · 0 评论 -
数据结构与算法系列-队列-队列的链式存储
定义:队列的链式存储结构称为链队列。在链队列中,有一个头指针和一个尾指针。队列空的条件 front=rear. 即头尾指针都指向表头结点。链队列的基本操作#include#includetypedef struct node{/*定义链队列结点*/ int data; struct node *next;/*指针类型变量.存放下一个结点地址*/}NOD原创 2013-11-10 22:19:09 · 971 阅读 · 0 评论 -
数据结构与算法系列-队列-循环队列
定义:循环队列:循环队列是将存储队列的存储区看成是一个收尾相连的环,即将表示队列的数组元素element[0]与element[MAXLEN-1]连接起来,形成一个环形表。在循环队列中 容量设为MANLEN,对首指针为front 队尾指针为rear 当rear=front时 不能判定循环队列是满还是为空,对此做出规定 front = rear 是循环队列为空的标志.(rear+!)原创 2013-11-10 22:14:43 · 1341 阅读 · 0 评论 -
数据结构与算法系列-队列-顺序队列
定义:队列:队列也是一种特殊的线性表,它仅允许在表的一端进行插入,在表的另一端进行删除,允许插入的一端称为队尾(rear),允许删除的一端称为对首(front)。在队列数据结构中,遵循先入先出原则。因此又把队列称为先进先出表(First In Fist Out,简称FIFO)比如说 我们坐火车的时候 火车进入隧道,车头先进入隧道,也是先从隧道出来。队原创 2013-11-10 22:08:20 · 877 阅读 · 0 评论 -
数据结构与算法系列-栈-栈的应用
1:算术表达式的计算表达式求值是编译系统中的一个基本问题,目的是把我们平时书写的算术表达式变成计算机能够理解并能正确求值的表达式。算术表达式中包含算术运算符和操作符。在运算的时候必须按优先级运算。因此,进行表达式运算时,必须设置两个栈,一个栈用于存放运算符,另外一个用于存放操作符。大家可以看下这边文章 。利用堆栈求解算术表达式 栈的应用举例:数制转换,表达式求值 代码来自htt原创 2013-11-10 21:51:25 · 987 阅读 · 0 评论 -
数据结构与算法系列-栈-顺序栈
栈的定义:栈又称堆栈,是一种特殊的线性表,限制:先进后出允许插入和删除的一端叫做变化的一端 称为栈顶, 栈顶元素 栈底。比如把子弹压入弹夹,里面的子弹就是先进后出。栈的顺序存储结构 简称顺序栈,它是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。顺序栈的定义及相关操作。#include#define MAXLEN 10typ原创 2013-11-10 20:48:47 · 1093 阅读 · 0 评论 -
数据结构与算法系列-线性表-线性表的应用
需求:线性表A、线性表B 都是循环链表存储结构,将B链表链接到A链表的后面,合并成一个链表。#include#includetypedef struct node{ int data; struct node *next;}NODE;NODE *create_circular(){ NODE *head,*q,*p; int a,n; head = (NODE *)m原创 2013-11-10 16:17:17 · 867 阅读 · 0 评论 -
数据结构与算法系列-线性表-线式存储结构、链式存储结构
线性表的定义:线性表是由N个数据元素组成的有限序列,N为数据元素的个数。线性表是一种非常典型的线性结构举例:26个英文字母(A,B,C……Z)就是一个线性表线性表的顺序存储结构称为顺序表,顺序表是将线性表中的数据元素按其逻辑顺序依次存放在内存中一组地址连续的存储单元中,即把线性表的相邻元素存在相邻的内存单元中。 顺序表的特点是逻辑上相邻的两个元素在物理位置也原创 2013-11-10 16:11:21 · 2131 阅读 · 1 评论 -
数据结构与算法系列-栈-链栈
栈的链式存储结构简称为链栈,他是一种特殊的单链表,也是一种动态存储结构,通常不会发生栈的溢出,不用预先分配存储空间。单链表的头部节点称为栈顶,尾部节点称为栈底.链栈节点的定义数据域 指针域datanext链栈的定义与基本操作#include#includetypedef struc原创 2013-11-10 20:55:01 · 1086 阅读 · 0 评论 -
数据结构与算法系列-线性表-数组(线性表的推广)
转载自 重庆邮电大学计算机学院 PPT数据元素可为结构类型的线性表数组是由一组具有相同特征的数据元素的组成的.如果数组元素只含有一个下标,则称为以为数组.若把数据元素的下标顺序变换成线性表的序号,则一维数组就是一个线性表.如果每个元素有两个下标,则称为二维数组,一个 m x n的矩阵就是一个二维数组.数组的ADT(抽象数据类型(Abstract Data Type))转载 2013-11-10 16:51:06 · 2311 阅读 · 0 评论 -
红黑树
写在前面 红黑树比较难以理解。之前学过一遍,后来又忘了,现在再次学习一遍并记录下来。再次之前 建议先去了解一下 树 二叉树 平衡二叉树。JAVA里面的TreeMap。 因为TreeMap底层就是红黑树。注: 此文字部分截图来源视频网站,如有侵权,可联系本人,敬请谅解。先来了解一下二叉树二叉树: 节点度的最大值为2。可以为0. 比如6无子节点,可以为1,比如5的子节点是10, 可...原创 2018-07-05 22:25:42 · 261 阅读 · 0 评论