![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 66
Yangmila
愿努力能撑起所愿。
展开
-
数据结构之Map
一、Map的基本概念Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯一的,不能重复.二、<K,V>结构的键值对Map.Entry<K, V> 是Map内部实现的用来存放<key, value>键值对映射关系的内部类,该内部类中主要提供了<key, value>的获取,value的设置以及Key的比较方式。方法名作用K getKey()返回entry中的key原创 2021-04-09 22:53:03 · 2050 阅读 · 0 评论 -
数据结构之排序
一 、冒泡排序1、基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。2、过程:比较两个相邻的元素,看是否符合升序要求,如果不符合就交换。一趟遍历下去,就能找到最大值,并且把最大值放到最后(从前往后遍历)。也能找到最小值,并且把最小值放到最前(从后往前遍历)。继续重复上述过程,依次将第2.3…n-1个最小数排好位置。3、各项指标:时间复杂度:O(NlogN)空间复杂度:O(1)稳定性:不稳定4、源程序: public static void swap(int[] arr原创 2021-03-26 16:38:18 · 191 阅读 · 0 评论 -
数据结构之堆
堆常用来实现优先队列,在这种队列中,待删除的元素为优先级最高(最低)的那个。在任何时候,任意优先元素都是可以插入到队列中去的,是计算机科学中一类特殊的数据结构的统称。一、堆的定义:如果有一个关键码的集合K={k0,k1,k2,…kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki<=K2i+1且Ki<=K2i+2(Ki>=K2i+1且Ki>=K2i+2) i =0,1,2…则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆原创 2021-03-22 10:59:18 · 422 阅读 · 0 评论 -
数据结构之二叉树的非递归排序
一、非递归先序遍历方法:1、创建一个栈;2、把根节点入栈;3、取出栈顶元素,访问这个节点;4、把当前节点的右子树入栈,左子树入栈(非空);5、回到3重复执行。源程序: public static void preOrderByLoop(TreeNode root) { if (root == null) { return; } // 创建一个栈 Stack<TreeNode> stack =原创 2021-03-21 21:33:41 · 702 阅读 · 0 评论 -
数据结构之完全二叉树
一、完全二叉树定义完全二叉树(Complete Binary Tree)若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。一棵二叉树至多只有最下面的一层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,而在最后一层上,右边原创 2021-03-17 15:44:21 · 121864 阅读 · 4 评论 -
数据结构之实现链表的基础操作(1)
要求:已知一条链表,不知道其长度的情况下:通过遍历,打印链表的每个元素。通过遍历,找到链表的最后一个结点。通过遍历,找到链表的倒数第二个结点。通过遍历,找到链表的第 n 个结点。(链表的长度 >= n)通过遍历,计算链表中元素的个数。通过遍历,找到链表中是否包含某个元素。源代码及注释Nodepackage java;// 使用 Node 表示链表的节点public class Node { public int val; public Node next =原创 2021-02-02 15:26:07 · 93 阅读 · 0 评论 -
数据结构之二叉树
一、树的基本概念1、定义树结构的特点是:它的每一个结点都可以有不止一个直接后继,除根结点外的所有结点都有且只有一个直接前趋。以下具体地给出树的定义及树的数据结构表示。(一)树的定义树是由一个或多个结点组成的有限集合,其中:1.必有一个特定的称为根(ROOT)的结点;2.剩下的结点被分成n >=0个互不相交的集合T1、T2、…n,而且,这些集合的每一个又都是树。树T1、T2、…Tn被称作根的子树(Subtree)。树的递归定义如下:(1)至少有一个结点(称为根);(2)其它是互不相交的原创 2021-03-13 20:29:25 · 332 阅读 · 0 评论 -
数据结构之队列
一、 基本概念队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First in First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。假设队列是q=(a1,a2,…,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而插入时,列在最后。这也比较符合我们通常生活中的习惯,排在第一个的优先出列,最后来的当然在队伍的最后。二、存储结构及自定义实现基本操作队列既然是一种线性表,所以原创 2021-03-09 21:52:23 · 151 阅读 · 1 评论 -
数据结构之栈
一、基本概念栈(Stack)又称堆栈,它是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。人们把此端称为栈顶,栈顶的第一个元素被称为栈顶元素,相对地,把另一端称为栈底。向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其下面的相邻元素成为新的栈顶元素。由于栈的插入和删除运算仅在栈顶一端进行,后进栈的元素必定先出栈,所以又把栈称为后进先出表(Last In First Out, 简称LIFO原创 2021-03-09 20:16:36 · 289 阅读 · 1 评论