![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
北航_Curry
记录、分享学习java后端的一些总结笔记和心得
展开
-
《数据结构与算法分析》P13 图1-6
Object o = "str"; 相当于多态,父类Object的引用指向了子类String的对象。 System.out.println("ssss"+o); 自动调用o的toString()方法。 Object中的toString()定义如下,但是String中重写了toString()方法 父类的引用在调用一个子类重写过的方法时,会调用子类重写的方法体。...原创 2021-03-22 20:39:35 · 96 阅读 · 0 评论 -
《数据结构与算法分析》p12-1.5.4
通配符转载 2021-03-22 21:27:59 · 59 阅读 · 0 评论 -
队列最大值
class MaxQueue { Queue<Integer> q; Deque<Integer> d; public MaxQueue() { q = new LinkedList<Integer>(); d = new LinkedList<Integer>();//LinkedList是队列接口Queue和Deque常用的实现类,也就是用链表实现一个队列 } pu...原创 2021-03-16 20:04:03 · 100 阅读 · 0 评论 -
堆
大小顶堆都是用数组的形式存储的,但结构上是利用完全二叉树来实现数组的排序的 类:(优先队列)PriorityQueue<E> implements Queue 增:向队尾添加元素删:删除队首元素 这两个方法一个含参数一个不含参数、一个返回boolean一个返回元素 对于大顶堆,队首一定是最大的元素。小顶堆队首则是最小元素 PriorityQueue天生是小顶堆,即无参构造器构造的是小顶堆。那么如果我要大顶堆怎么办?(自定义构造器参...原创 2021-04-13 13:12:26 · 73 阅读 · 0 评论 -
二叉查找树
一、二叉树定义:二叉树就是度不超过2的树(即每个节点最多有两个子结点)满二叉树定义:一个二叉树,每一层的结点树都达到了最大值,就称为满二叉树二、二叉查找树API设计:二叉查找树每个结点都是储存一个key和一个value。 本文用链表实现二叉查找树 三、二叉查找树的实现接口Comparable<T>的使用: 注意程序这里要写上Key继承了Comparable接口,然后后面才可以调用compareTo方法...原创 2021-03-31 21:38:06 · 157 阅读 · 0 评论 -
栈—stack
一、栈的介绍二、入栈(push)栈有两个指针,一个指向栈底,一个指向栈头。 空栈时,两个指针都指向栈底的下面 第一个元素入栈时,两个指针都指向第一个元素,即是栈头也是栈底 随后再push的时候,栈底的指针不动,栈头指针上移三、出栈(pop)出栈pop时,栈底指针不动,栈头下移四、栈的应用场景五、用数组模拟栈public class stackTest { public static void main(String[] args){原创 2021-01-26 15:02:55 · 3036 阅读 · 0 评论 -
约瑟夫问题与单向环形链表
1.约瑟夫问题的提出2.单向环形链表示意图单向环形链表可以带头节点,也可以不含头节点。 处理约瑟夫问题不需要有头节点3.创建单向环形链表的思路及代码实现创建单向环形链表的方法:addBoy(int nums);是一次性添加nums个小孩节点(注意此方法只适用于第一次添加,第二次添加就不能用这个方法) step1: step2:添加进第一个节点: step3:添加第二个节点: step3:添加第三个节点:public class CircleSingleLinkedLis.原创 2021-01-23 21:39:57 · 80 阅读 · 0 评论 -
双向链表
public class DoubleLinkedListTest { public static void main(String[] args){ //双向链表的测试 heroNode2 hero1 = new heroNode2(1,"宋江","及时雨"); heroNode2 hero2 = new heroNode2(2,"卢俊义","玉麒麟"); heroNode2 hero3 = new heroNode2(3,"吴..原创 2021-01-23 12:19:01 · 78 阅读 · 0 评论 -
单链表—Single Linked List
一、单链表的存储方式头指针:指向链表第一个元素的地址值150 data域代表此处存储的值,next域指向下一个元素的地址 链表是以节点的方式存储的,而且链表上相邻两个节点的地址不一定相邻,也就是说不一定是连续存放的 当next域为null时,表示链表结束 链表分为有头节点的和无头节点的链表,根据实际需求来定二、向单链表添加元素需求:定义一组梁山好汉对象,id代表其排位。将其添加到链表中add的思路分析:找到最后一个节点,把它的next替换为要添加的元素。ne..原创 2021-01-10 17:10:32 · 355 阅读 · 0 评论 -
使用数组实现队列
1. 队列第一个图是队列一开始为空,rear 和 front都 = -1; 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear则是随着数据输入而改变 rear:队列最后一个元素所在的数组索引值 front:队列第一个元素所在的数组索引值-1 maxSize 是该队列的最大容量 用数组来实现队列class QueueTest{ public st原创 2021-01-08 16:49:43 · 720 阅读 · 1 评论 -
稀疏数组sparseArray
引入:因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据,用稀疏数组来存放数据会更节省空间。当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 。把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模稀疏数组一定是三列,行数不确定 第0行分别是:1.原始二维数组的行数 2.原始数组的列数 3.原始数组非零元素个数 除了第0行以外,每一行记录了一个非0元素...原创 2021-01-07 22:04:32 · 134 阅读 · 0 评论