
数据结构与算法
文章平均质量分 95
为提高内容质量,如果您在阅读的过程中发现与其他博主存在高度相似的文章,请及时在评论区留言,如非本人原创,将立即删除处理。
呆呆papa
这个作者很懒,什么都没留下…
展开
-
如何计算地球上两点的距离(附公式推导)
前段时间,看了一些电子围栏的算法,对其中一段计算球面上两点距离的代码有些不解,然后找了一下相关算法,在维基百科的大圆距离词条中记录了相关的计算公式,大致思路就是求出这两点间的弧长对应的圆心角的余弦或正弦,然后利用反三角函数计算出圆心角的弧度,最后求出:弧长=弧度值 × 地球半径。注:上图使用的是百度地图测距功能,测量湖北省襄阳市火车站出站口和位于吉林省长春市的地铁1号线所途径的长春站北地铁站的距离一、具体实现假设球面上有两点A(λ1 , φ1)、B(λ2, φ2),λ 和 φ 分别表示它们在地图中的原创 2022-01-16 00:24:11 · 14774 阅读 · 2 评论 -
线段树的设计思路和基本实现
在平常见到的树形数据结构中,操作对象都是单个元素,像二分搜索树……;假设要对一个区间进行操作(比如求某个子区间的和),可以使用数组来表示区间,直接对数组进行操作,明显缺点就是时间复杂度过高;这里可以将一个区间拆分为一个个子区间,所有的区间作为二叉树的结点,这颗二叉树是一颗平衡二叉树,即线段树。原创 2020-06-11 15:08:59 · 339 阅读 · 0 评论 -
基于最大堆实现的优先队列
树的另一种存储形式在之前的二分搜索树中,使用的是链式的存储方式来存放树中的结点,这里二叉堆我们可以使用二叉树的另一种存储形式——数组,因为二叉堆是一颗完全二叉树,原创 2020-06-09 22:41:36 · 578 阅读 · 0 评论 -
基于链表和二分搜索树的集合实现
什么是集合?在数学上集合是一个或多个元素所构成的整体,集合有三个特性,即确定性、无序性、互异性。在 Java 中的集合叫做 set ,是一个无序的集合,并且不允许重复元素存在,集合无序性体现在元素的存储顺序和输入顺序关。这里将会利用两种底层数据结构来实现集合这种高级数据结构,即链表和二分搜索树。Set 集合中的接口有了基础的数据结构知识,实现一个简单的集合不会太难,这里是集合中的接口:...原创 2020-06-08 17:51:51 · 189 阅读 · 0 评论 -
二分搜索树的设计思路以及常见的操作实现
二分查找树是个啥?二分查找树(binary search tree),也叫二分搜索树。可以说是二叉树的一个应用,也是二叉树的一种数据结构,如图:特点:右子树总是大于根节点,左子树总是小于根节点。既然是二叉树,同样是一种动态数据结构,可以使用结点类来存放每个结点,如下:所有操作代码实现import java.util.Queue;import java.util.LinkedList;public class BST <E extends Comparable<E>>{原创 2020-05-26 01:13:42 · 1456 阅读 · 5 评论 -
如何使用递归来解决问题?
简单的递归运算有一个数组 a[5] = {10, 5, 4, 2, 1} ,利用递归运算来求和 sum public class Test { int[] a = new int[]{10, 5, 4, 2, 1}; int sum; public Test() { sum = summation(a.length - 1); } /*递归求和*/ public int summation(int i) { if(i == 0) return a[0]; return a[原创 2020-05-21 17:57:31 · 1375 阅读 · 0 评论 -
Java数据结构:链表的简单实现
链表工作原理问题1:虚拟结点的使用,为什么要使用虚拟结点?虚拟结点就是C数据结构中所说的头结点,它的next指针指向第一个结点(当然Java中是没有指针的);使用了虚拟结点,在删除第一个结点时不会误删导致整个链表丢失,有利于维护链表。问题2:链表中未使用数组,索引从何而来?链表也是线性表,不论是逻辑顺序和存储顺序上,表中元素都是相邻的;所以我们可以从第一个结点开始到最后一个结点,给他指定一个索引来方便我们指定结点。问题3:索引是如何在链表中进行移动的呢?在链式存储结构中,我们通过next引用将原创 2020-05-18 23:49:17 · 578 阅读 · 0 评论 -
Java数据结构:循环队列的简单实现
ADT 介绍1.数据结构动画演示:Tips:front 索引始终指向队头元素,而 tail 索引始终指向队尾元素后的空间队列真实容量为 data.length-1 队头和队尾再数组中的真实位置为:索引值取模运算结果,模为数组的长度,即data.length2.操作集合getSize() :获得队列中的元素个数;return类型为intgetCapacity() :获得队列的容量;return类型为intisEmpty() :判断队列是否为空;若空,return true,否则原创 2020-05-16 15:39:50 · 222 阅读 · 0 评论 -
Java数据结构:队列的简单实现
ADT 介绍1.数据结构在顺序表的基础上,建立队列的数据结构队列的特点:先进先出(FIFO)2.操作集合getSize() :获得队列中的元素个数;return类型为intgetCapacity() :获得队列的容量;return类型为intisEmpty() :判断队列是否为空;若空,return true,否则,return falseenqueue(E element) :入队操作dequeue() :出队操作getFront() :获取队头元素代码实现Queue.i原创 2020-05-15 16:28:53 · 213 阅读 · 0 评论 -
Java数据结构:栈的简单实现
ADT 介绍1.数据结构在顺序表的基础上,建立栈的数据结构栈的特点:先进后出2.操作集合getSize() :获得栈中的元素个数;return类型为intgetCapacity() :获得栈的容量;return类型为intisEmpty() :判断栈是否为空;若空,return true,否则,return falsepush(E element) :入栈操作pop() :出栈操作peek() :获取栈顶元素代码实现Stack.interfacepublic inter原创 2020-05-14 22:22:12 · 203 阅读 · 0 评论 -
Java数据结构:顺序表的简单实现
ADT1.数据结构使用泛型数组,扩大顺序表的存储数据类型动态分配空间,通过动态扩容数组,使得不用为顺序表的空间问题发愁2.操作集合getSize() :获得顺序表中的元素个数;return类型为intgetCapacity() :获得顺序表的容量;return类型为intisEmpty() :判断顺序表是否为空;若空,return true,否则,return falseadd(int idx, AnyType element) :添加元素;添加元素式,如果顺序表已满,则自动扩容为原原创 2020-05-13 12:54:40 · 1415 阅读 · 0 评论 -
C 数据结构:队列的链式表示和顺序表示
文章目录前言队列的部分ADT链队列数据结构前言关于假溢出和循环队列队列的特性是先进先出,后入后出(FIFO),我们在进行入队列和出队列操作时,在队头进行删除元素,在队尾插入元素;假设我们定义一个空间大小MAXSIZE为4的队列:当队头元素a出列时,队列空间中就会出现一个空单元,但是如果再来新的元素却无法入队列,因为e后面没有空单元了,队列未溢出却无法入队,这种现象叫假溢出循环队列的...原创 2020-01-16 20:27:32 · 918 阅读 · 1 评论 -
C 数据结构:链栈和顺序栈
C语言怎么实现顺序栈和链栈原创 2019-12-31 17:11:50 · 217 阅读 · 0 评论 -
C 数据结构:多项式的加法,乘法,微分运算
线性表的应用:使用链表实现多项式的加法、乘法、微分运算原创 2019-12-22 20:31:02 · 1956 阅读 · 0 评论 -
C 数据结构:链表的实现
单链表单链表的存储结构单链表ADT实现链表初始化问题链表删除问题双向链表双向链表的结构体双向链表的逻辑结构双向链表的ADT实现双向链表的结点删除问题循环链表循环链表逻辑结构全部代码运行结果原创 2019-12-15 15:53:16 · 892 阅读 · 0 评论 -
C 数据结构:顺序表的实现
顺序表ADT实现对表的操作( 所有操作前提是顺序表存在)对表中元素的操作(操作的前提是顺序表不为空)顺序表的存储结构顺序表插入操作实现如何判断顺序表是否存在顺序表中指针传递问题全部代码原创 2019-12-11 20:32:47 · 1004 阅读 · 0 评论 -
C 数据结构:结构体复习
C语言结构体复习:1.如何声明一个结构体2.如何定义结构体类型变量3.结构体数组使用4.如何初始化结构体成员5.结构体指针的定义及引用结构体成员原创 2019-12-09 20:56:26 · 304 阅读 · 0 评论