之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1:当栈为满栈时,top=MaxSize-1.顺序栈的定义为: #define MaxSize 50 //定义栈中元素的最大个数 typedef struct{ Elemtype data[MaxSize]; //存放栈中元素 int top; //栈顶指针 }SqStack; //顺序栈的简写 顺序栈…
树是一种一对多的逻辑结构,树的子树之间没有关系. 度:结点拥有的子树数量. 树的度:树中所有结点的度的最大值. 结点的深度:从根开始,自顶向下计数. 结点的高度:从叶结点开始,自底向上计数. 树的性质:①树的结点数等于所有结点的度数加1:②度为m的树中第i层上至多有mi-1个结点(i>=1):③度为h的m叉数至多有(mh-1)/(m-1)个结点:④具有n个结点的m叉树的最小高度为[logm(n(m-1)+1)]. 树的表示方法: ①双亲表示法(顺序表示法):根节点parent=-1 typede…
2-3树:是一种多路查找树,包含2结点和3结点两种结点,其所有叶子结点都在同一层次. 2结点:包含一个关键字和两个孩子(或没有孩子),其左孩子的值小于该结点,右孩子的值大于该结点. 3结点:包含两个关键字和三个孩子(或没有孩子),其左孩子的值小于关键字最小值,右孩子的值大于关键字最大值,中间孩子的值介于两个关键字之间. 2-3-4树:类似于2-3树,4结点包含三个关键字和四个孩子. B树:是一种平衡的多路查找树,2-3树和2-3-4树都是B树的特例,树中各结点中最大的孩子数目称为B树的阶. 一个…
抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作,通常用(数据对象,数据关系,基本操作集)这样的三元组来表示抽象数据类型. 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,由逻辑结构.存储结构.数据的运算组成. 数据结构的逻辑结构有线性结构(一对一).树(一对多)以及图(多对多). 数据结构的存储结构有顺序结构.链式结构.索引结构和散列结构. 数据的运算由运算的定义以及运算的实现构成. 算法有以下五个特性:①有穷性:②确定性:③可行性:④输入:⑤输出. 时间复杂度T(…
动态查找表包括二叉排序树和二叉平衡树. 二叉排序树:也叫二叉搜索树,它或是一颗空树,或是具有以下性质的二叉树: ①若左子树不空,则左子树上所有结点的值均小于它的根结点的值: ②若右子树不空,则右子树上所有结点的值均大于它的根结点的值: ③它的左右子树也是二叉排序树. 由此可得,对二叉排序树进行中序遍历可以得到一个递增的有序数列. 二叉排序树的查找:将关键字与根结点相比较 typedef struct BiTNode{ //二叉排序树结点结构 int data; //结点数据 struct BiT…
查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找. 查找表:用于查找的数据集合称为查找表,一般有以下操作:①查找是否在表中:②查找属性:③进行操作. 查找表又分为: ①静态查找表:只可以进行之前的①②操作,例如顺序查找.折半查找: ②动态查找表:可以进行以上①②③所有操作,例如二叉排序树.二叉平衡树. 关键字:数据元素中某个可以唯一标识该元素的数据项. 平均查找长度(ASL):在查找的过程中,一次查找的长度是指需要比较的关键字次数,而平均查找长度则是所有查找过程中进行关键字的比较次数的…
图(G)由顶点集(V)和边集(E)组成,G=(V,E) 常用概念: ①V(G)表示图G中顶点的有限非空集,V永不为空: ②用|V|表示图G中顶点的个数,也称为图G的阶: ③E(G)表示图G中顶点之间关系(边)的集合: ④用|E|表示图G中边的条数. 图分为: ①有向图:有向边(弧)的有限集合<V,W>: ②无向图:无向边(边)的有限集合(V,W). 简单图:不存在顶点到自身的边,同一条边不重复出现. 多重图:某两个结点之间的边数多于一条,又允许顶点通过一条边和自己关联. 完全图:任意两个结点之…
线性表是指具有相同数据类型的n(n>=0)个数据元素的有限序列,它具有一个表头元素和一个表尾元素,并且每一个数据元素最多只有一个直接前驱和一个直接后继. 线性表的顺序存储也叫作顺序表,它的特性是地址连接.依次存储. 顺序表的定义有静态建表和动态建表两种. 静态建表的实现方法为: #define MaxSize 50 //定义线性表的最大长度 typedef int ElemType; //假定表中元素类型是int typedef struct{ ElemType data[MaxSize]; /…
三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性的数据结构. 从数据类型的角度看,它们是和线性表大不相同的两种重要的抽象数据类型,在面向对象的程序设计中,它们是多型数据类型. 3.1-栈 3.1.1-抽象数据类型栈的定义 栈:是限定仅在表尾进行插入或删除操作的线性表,又可以称为后进先出的线性表. 栈顶:栈的表尾端 栈底:栈的表头端 空栈:不含元素…
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 4. 垃圾回收机制(Garbage Collection) 5. this关键字 6. static 关键字 7. 静态初始化块 8. 参数传值机制 9. 包 第5章 Java面向对象进阶 1. 继承 2. Object类 3. super关键字 4. 封装 5. 多态(polymorphism)…