![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
M_youj
这个作者很懒,什么都没留下…
展开
-
队列的实现和原理
普通队列队列是一种先进先出(FIFO)的数据结构每次出队都从head中获取第一个,每次入队都是添加在tail的后面。队列可以使用动态数组和链表来实现import java.util.ArrayList;import java.util.List;public class Queue<E> { private List<E> list; pu...原创 2019-10-27 00:05:39 · 742 阅读 · 0 评论 -
双向链表的实现和原理
双向链表双向链表与链表的区别在于,双向链表有指向前一个节点的指针,可以获取到前一个节点。获取值的时候,可以判断index下标所在的位置,从而决定从首节点开始查找还是从尾节点开始查找public class LinkedList<E> { private static final int ELEMENT_NOT_FOUNT = -1; private int s...原创 2019-10-20 21:45:16 · 229 阅读 · 0 评论 -
ArrayList动态数组的实现原理
数组在内存中,是一串连续的内存,针对查找某个下标的元素的情况,时间复杂度为O(1)但是数组在创建时,就要确定需要申请多少内存,保存的元素数量有限。动态数组的原理就是当数组的元素达到容量上限是,重新申请一片更大的内存,将原来的数组元素迁移到新的地址空间上。动态数组通过扩容的形式,使数组的容量不受限制。public class ArrayList<E> { private...原创 2019-10-20 16:39:22 · 486 阅读 · 0 评论 -
单链表的原理与实现
单链表在内存中不像数组那样,拥有连续的内存空间,内存空间是碎片化的单链表主要是在每个节点中保存下一个节点的内存地址,便于获取下一个节点的内容添加的时候,直接找到要添加的位置的前一个节点,然后将引用指向要添加的内容例如在下标为1的位置添加一个59只需要找到下标为0的位置的节点,将该节点的下一个引用指向新的节点,然后新的节点的下一个引用指向原来下标为1的节点。不需要像动态数组那样,将后面...原创 2019-10-19 22:59:18 · 657 阅读 · 0 评论