数据结构
基础数据结构
是小光a~
我想做一个布道者,什么布道者,在我看来,布道者就是一个坚守自己理想信念,并且能给他人带来正能量,能够通过自己的努力让他人过得更好的人。 希望你们能有所收获,有所成长,这就是我努力的意义。——摘自博文
展开
-
ArrayList(可变数组)与LinkedList(链表)实现
ArrayList(可变数组)与LinkedList(链表)实现:JDK-ArrayList部分方法实现(可变数组):JDK-LinkedList部分方法实现(链表):JDK-ArrayList部分方法实现(可变数组): //JDK-ArrayList部分方法实现(可变数组,此处可变数组并不遵循满2倍增长或者保留1/4减小的空间状态,仅设置为随数据量大小变动size): public class ArrayList<E> extends AbstractList<E>原创 2021-03-13 00:29:20 · 362 阅读 · 0 评论 -
implements Comparable接口并重写compareTo(T o)方法实现比较与排序
implements Comparable接口并重写compareTo方法实现比较与排序实现Comparable接口并重写compareTo(T o)方法后实现比较排序:插入排序(它对实现Comparable接口的任何类型的数据进行排序,时间复杂度n^2):例如我们在counter类中实现comparable接口并实现了CompareTo()方法以期进行比较排序:归并排序(它对实现Comparable接口的任何类型的数据进行排序,时间复杂度nlgn,但空间上需要Comparable[] aux这样一个与原数原创 2021-03-12 22:27:08 · 3049 阅读 · 0 评论 -
自定义数据类型的迭代器实现:Iterable与Iterator
自定义数据类型的迭代器实现Iterable与Iterator:Iterable:Iterator:实现迭代流程:Iterable与Iterator:Iterable:Iterator:实现迭代流程:我们可以在需要迭代的数据类型(如队列Queue)中实现Iterable接口,然后实现方法iterator()并返回一个Iterator类型的迭代器(实现Iterator接口的内部嵌套类(如 ListIterator,此处的 ListIterator不同于jdk中的 ListIterator)以便访问原创 2021-03-12 21:43:40 · 390 阅读 · 0 评论 -
二分查找算法的非递归调用与递归调用实现
二分查找算法的非递归调用与递归调用实现: /** * 非递归 调用 */ private static int search1(int[] array,int key){ int low = 0; int high = array.length - 1; while(low <= high){ int mid = (low + high) >> 1; if(key翻译 2021-03-12 21:18:24 · 129 阅读 · 0 评论 -
排序算法
排序的基本概念排序算法的稳定性排序的分类时空复杂度比较原创 2019-12-25 20:44:27 · 189 阅读 · 0 评论 -
查找技术
对于数据的基本操作是增删查改(CRUD)(Create(创建)、Retrieve(检索)、Update(更新,更改)、Delete(删除)),我们可以注意到对于删和改两个基本操作,一般在进行之前都会先进行查找操作。因此查找技术相当重要,也由此产生了专门面向查找技术的各种数据结构。查找技术是多元化的,比如构建一个数据库,或者对于电脑文件的快速查找等等。这些查找技术一部分是需要我们牢牢掌握的,一部分是需要我们深刻理解的。原创 2019-12-25 20:00:16 · 940 阅读 · 0 评论 -
有向无环图及其应用: AOV网与拓扑排序 AOE网与关键路径
有向无环图及其应用:AOV网与拓扑排序:AOE网与关键路径:由AOE网的性质引出的几组定义:关键活动与关键路径的确定:原创 2019-12-01 16:10:49 · 628 阅读 · 0 评论 -
最短路径之(迪杰斯特拉)Dijkstra算法(及其改进:BF算法,SPFA算法),(弗洛伊德)Floyd算法
最短路径之(迪杰斯特拉)Dijkstra算法(及其改进:BF算法,SPFA算法),(弗洛伊德)Floyd算法:1.Dijkstra算法不能解决带负权边的图2.B-F算法做了优化允许图中出现负权边并解决该问题3.SPFA算法利用队列对B-F算法进一步优化,允许图中可以出现环但是不能解决带环的图(仅能判别出现但是不能解决)4.Floyd算法能解决负权边但不能解决负环原创 2019-12-01 15:46:39 · 2581 阅读 · 0 评论 -
最小生成树的MST性质和普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法
最小生成树的MST性质普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法原创 2019-12-01 15:36:49 · 611 阅读 · 0 评论 -
二叉树相关问题
根据二叉树的扩展序列构造二叉树,并对其进行前序、中序、后序遍历二叉树的其他算法(统计结点个数、叶子结点个数、树的高度、左右子树的交换等)利用二叉树的性质解决问题原创 2019-12-01 15:31:25 · 317 阅读 · 0 评论 -
森林、树、二叉树的性质与关系
我们对于树和二叉树这一部分的内容主要研究树的逻辑结构和存储结构,由于计算机的特殊性存储结构及二叉树的简单性,我们更主要讨论二叉树的逻辑结构和存储结构并对其进行实现(其中包含二叉树的一些重要性质),另外我们在研究这一类问题时,首先要考虑到树与森林之间的转换,以及树与二叉树之间的转换。从而简化为最简单的二叉树问题。原创 2019-12-01 15:11:59 · 962 阅读 · 0 评论 -
字符串和多维数组
字符串和多维数组模式匹配(BF算法,KMP)矩阵的压缩存储:1.特殊矩阵:对称矩阵,对角矩阵,2.稀疏矩阵:三元组表的顺序存储与十字链表法链式存储原创 2019-11-05 17:12:16 · 203 阅读 · 0 评论 -
特殊线性表--栈和队列
特殊线性表–栈和队列顺序栈——栈的顺序存储结构栈属于特殊的线性表,支持进栈出栈判空判满等基础操作.可以利用数组模拟栈搭配top值进行以上的基础操作.两栈共享空间(双端栈) :在一个程序中需要同时使用具有相同数据类型的两个栈,可以为这两个栈用数组模拟创建共享空间,称为双向栈.两栈共享空间:使用一个数组来存储两个栈,让一个栈的栈底为该数组的始端,另一个栈的栈底为该数组的末端,两个栈从各自的...原创 2019-11-05 16:53:03 · 1392 阅读 · 0 评论 -
线性表
线性表线性表的顺序储存结构: --顺序表线性表的链式存储结构及实现链表的其他表示方式:循环链表,双向链表,静态链表原创 2019-11-05 16:43:02 · 207 阅读 · 0 评论 -
模板
模板定义:模板是对具有相同特性的函数或类的再抽象,模板是一种参数化的多态性工具。所谓参数化多态性,是指将程序所处理的对象的类型参数化,使一段程序代码可以用于处理多种不同类型的对象。优点:采用模板编程,可以为各种逻辑功能相同而数据类型不同的程序提供一种代码共享的机制。模板分为:函数模板, 类模板.模板通过参数实例化可以构建具体的函数或类,称为模板函数和模板类。因此函数模板与模板函数,...原创 2019-11-05 16:21:57 · 183 阅读 · 0 评论 -
单链表与有序双链表的实现
单链表的实现:描述定义单链表类,创建带头结点的单链表(节点类型为整型数据),要求包含以下成员函数:头插法创建单链表(利用构造函数实现)尾插法创建单链表(重载构造函数实现)链表的遍历按值删除一个节点按位置删除一个节点链表的析构输入输入一组数据,以尾插法的形式创建单链表(0表示输入结束)(构造第一个链表)输入一组数据,以头插法的形式创建单链表(0表示输入结束)(构造第二个链表)...原创 2019-10-08 18:00:55 · 282 阅读 · 0 评论 -
约瑟夫环
约瑟夫环描述约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。输入8 1 3 (n=8 k=1 m=3 )输出7 (剩下的那个)代码:#include <iostream>using n...原创 2019-10-08 17:44:51 · 119 阅读 · 0 评论