
数据结构
哇哈哈~~~
日常更新一些代码题 , 不定期更新~~
展开
-
数据结构:堆
堆 是一种基于[完全二叉树]的数据结构,可使用数组实现。以堆为原理的排序算法称为[堆排序],基于堆实现的数据结构为[优先队列]。堆分为[大顶堆]和[小顶堆],大(小)顶堆:任意节点的值不大于(小于)其父节点的值。完全二叉树定义: 设二叉树深度为 kk ,若二叉树除第 kk 层外的其它各层(第 11 至 k-1k−1 层)的节点达到最大个数,且处于第 kk 层的节点都连续集中在最左边,则称此二叉树为完全二叉树。如下图所示,为包含1, 4, 2, 6, 8元素的小顶堆。将堆(完全二叉树)中的结...原创 2021-11-08 23:55:40 · 221 阅读 · 0 评论 -
数据结构:图
图 是一种非线性数据结构,又[节点(顶点) vertex] 和 [边 edge]组成,每条边连接一对顶点。根据边的方向有无,图可分为[有向图] 和 [无向图]。 本文以无向图为例开展介绍。如下图所示,此无向图的 顶点 和 边 集合分别为:***顶点集合: vertices ={1,2,3,4,5}***边集合: edges ={(1,2),(1,3),(1,4),(1,5),(2,4),(3,5),(4,5)}表示图的方法通常有两种: 1.邻接矩阵:使用数组...原创 2021-11-02 23:13:26 · 183 阅读 · 0 评论 -
数据结构:树
线性结构:一个有序数据元素的集合,其中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其他数据元素都是首尾相接的。非线性结构:各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系。根据关系的不同,可分为层次结构和群结构。数 是一种非线性数据结构,根据子节点数量可分为[二叉树]和[多叉数],最顶层的节点称为[根节点 root]。以二叉树为例,每个节点包含三个成员变量:[值 val]、[左子节点 left]、[右子节点 right]。cla原创 2021-10-31 21:10:01 · 344 阅读 · 0 评论 -
数据结构:队列
队列是一种具有[先入先出]特点的抽象数据结构,可使用链表实现。它只允许在表的前端进行删除操作,而在表的后端进行插入操作,LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来使用。Queue<Integer> queue = new LinkedList<>();如下图所示,通过常用操作[入队 offer()],[出队 poll()],展示了队列的先入先出特征.queue.offer(1);//元素1入队queue.offer原创 2021-10-31 20:23:38 · 83 阅读 · 0 评论 -
数据结构:栈
栈 是一种具有[先进后出]特点的抽象数据结构,可使用数组或者链表来实现。Stack<Integer> stack = new Stack<>();如下图所示,通过常用的操作[入栈 push()],[出栈 pop()],展示了栈的先入后出的特性。stack.push(1);//元素1入栈stack.push(2);//元素2入栈stack.push();//元素出栈 -> 元素2 stack.push();//元素出栈 -> 元素1注意:.原创 2021-10-31 17:41:25 · 390 阅读 · 0 评论 -
数据结构:链表
链表以节点为单位,每个元素都是一个独立对象,在内存空间的存储是非联系的。链表的结点对象具有两个成员变量:[值 val],[后续节点应用 next]。class ListNode{ int val; //节点值 ListNode next; //后续节点引用 ListNode(int x){ val =x };}如下图所示,建立此链表需要实例化每个节点,并构建各节点的引用指向。//实例化节点ListNode n1 =new ListNode(4);//头节点Lis原创 2021-10-31 16:58:00 · 112 阅读 · 0 评论 -
数据结构:数组
数组是将相同类型的元素存储与连续内存空间的数据结构,其长度不可改变。如下列代码所示,构建数组需要在初始化时给定长度,并对数组每个索引元素赋值,//初始化一个长度为5的数组arrint[] arr = new int[5];//元素赋值arr[0]=2;arr[1]=3;arr[2]=1;arr[3]=0;arr[4]=2;//或者直接赋值的初始化方法:int[] arr = [2,3,1,0,2];[可变数组]是经常使用的数据结构,其基于数组和扩容机智实现,相比普.原创 2021-10-31 16:42:12 · 75 阅读 · 0 评论