数据结构
文章平均质量分 89
利用Java语言对数据结构思想进行实现
过✪
岁月漫长,值得等待
展开
-
详解Map和Set
二叉搜索树上的每一个结点其左子树的值小于根结点的值并且右子树的值大于根结点的值,对二叉搜索树进行中序遍历就能得到一个有序序列,所以二叉搜索树又称二叉排序树。Map是一个接口,但并没有继承Collection类,存放的是Key-Value键值对。Key都有与之对应的Value,Map中Key是惟一的,但Value并不唯一。Map.Entey是Map用于来存放键值对映射关系的内部类。该类主要提供有getKey()、getValue()、setValue()方法,并没有setKey的方法。原创 2023-01-21 14:29:35 · 2509 阅读 · 3 评论 -
一文带你秒懂十大排序
排序就是将一组乱序的数据集合变得有序内部排序:数据全部存放在内存中进行排序。外部排序:数据太多而不能全部存放在内存,整个排序·过程需要在内外存之间多次交换数据才能进行。根据排序的策略分为:插入排序、选择排序、交换排序和归并排序。时间复杂度。空间复杂度。稳定性:就是排序前后两个相同元素的相对位置保持不变。一个稳定的算法可以变得不稳定,但是一个不稳定的算法不能变得稳定。排序在我们日常生活中有很多的应用,例如在购物页面可以选择价格从低到高排序,导航时路程可以根据预测花费时间进行排序。原创 2023-01-16 18:23:30 · 2759 阅读 · 11 评论 -
堆与优先级队列
堆也是一种数据结构,将一组数据集合按照完全二叉树的方式存储起来,堆分为大根堆和小根堆,如果根结点总是大于孩子结点就是大根堆,如果根结点总是小于孩子结点就是小根堆。优先级队列也是一种队列,普通队列具有先进先出的特点,优先级队列中存放的元素带有优先级,是优先级高的元素先出队。优先级队列主要分为PriorityQueue和PriorityBlockingQueue,前者是线程不安全的,后者是线程安全的,本文主要讲解前者。优先级队列底层是利用堆来实现。原创 2023-01-13 01:39:50 · 362 阅读 · 2 评论 -
二叉树常见题目
前序遍历的顺序是根-左-右,中序遍历的顺序是左-根-右,就可以创建一个递归函数,参数为前序遍历数组和中序遍历的数组以及开始点ib和结束点ie,当ib>ie是就退出递归,此时已经越界,否则就将i所指的元素包装为根结点,可以定义一个变量i从0开始对前序遍历的序列进行遍历,得到i对应的元素k,k就为根结点,然后在中序遍历中查找k对应的下标index,那么左子树的范围就是0~index-1,右子树的范围是index+1~len,len表示数组长度,然后逐步递归,最后返回root。原创 2023-01-12 19:24:10 · 662 阅读 · 3 评论 -
反射&&枚举
在Java的反射机制指的是在运行状态下对于任意一个类都能获取到它的属性和方法,对于任何任意一个对象能调用它的所有属性和方法。对于拿到的信息也可以进行修改,这种动态获取信息以及动态调用对象方法的功能就是反射机制。将一组常量组织起来创建出个类。原创 2023-01-14 20:40:08 · 431 阅读 · 9 评论 -
Java实现二叉树
二叉树也是一种特殊的树结构,但是二叉树的度最大只能为2,也就是说,二叉树中只存在度为1的结点和度为2的结点以及叶子结点。二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树。原创 2023-01-09 21:10:07 · 626 阅读 · 5 评论 -
Java实现队列
队列也是常见的数据结构,是一种线性数据结构,队列的主要特点:“先进后出”。队列有队头和队尾,一般在队尾进行插入操作,队头进行删除操作。原创 2023-01-08 00:46:51 · 2575 阅读 · 5 评论 -
Java实现栈结构
栈(Stack)也是数据结构的一种,属于线性数据结构,栈最大的特点是“先进后出”,就是先进入栈的元素后出来,栈只能每次弹出栈顶元素,不能弹出处在栈中间的元素。原创 2023-01-05 18:14:17 · 1515 阅读 · 5 评论 -
秒懂双向链表
双向链表也是线性结构,但是与单链表相比,不仅有next指针指向下一个结点,还有prev指针指向前一个结点,在双向链表中,除了head指向首元结点之外,还有last指向双向链表的最后一个结点。}}原创 2023-01-04 16:10:25 · 733 阅读 · 5 评论 -
查找两个链表的第一个公共结点
由于时间复杂度不超过O(n),那么最多只能遍历一次,我们可以设置两个结点分别指向链表的首元结点,两个链表都进行遍历,就是如果当前的链表遍历完之后,就让其遍历另一条链表,因为遍历的速度一样,且遍历的总长度一样,如果有相同结点则一定会在遍历结束前找到,否则没有相同结点。对于该题我首先想到的是对两个链表同时进行遍历,若两个结点相同,则直接返回相同结点,但是提交之后无法通过,最后发现我的这种解法只适合等长链表求相同结点,这种解法并不可行。可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。原创 2022-12-09 17:46:12 · 310 阅读 · 4 评论 -
数据结构——链表
目录一、链表概述二、模拟实现链表 1、结点 2、遍历链表3、获取链表的长度 4、添加元素 (1)、头插法 (2)、尾插法 (3)、在指定位置插入元素 5、删除元素 (1)、删除第一次出现值为key的结点 (2)、删除所有值为key的结点6、清空链表 三、常见笔试题 1、单链表转置2、获取单链表的中间结点 3、获取倒数第K个结点4、合并两个有序链表 2、遍历链表3、获取链表的长度 4、添加元素 (1)、头插法 (2)、尾插法原创 2022-12-04 13:29:54 · 1244 阅读 · 0 评论 -
数据结构——顺序表
顺序表是数据结构的一种,是List的子类,以数组的形式进行存储。顺序表的特点:顺序表都是连续的。存取速度快,依靠下标直接进行存取。不适合频繁插入和删除,需移动大量元素,时间复杂度高。首先需要定义一个牌类,有花色和大小两个属性。}}原创 2022-11-29 17:39:11 · 755 阅读 · 1 评论