手撕HashMap主要是为了能更好的理解HashMap的数据结构原理。只实现了 put、get、remove。 JDK 实现的实在太复杂。这个实现是实现最简单的版本。后续如果有时间会逐一补上 自动扩容,数组+红黑树的实现。 前提条件 数组+链表有基本了解 实现逻辑 ...
单链表常见的实现方法有两种,一种方式是定义一个结构体表示链表节点。比如: 然后就是通过next指针将链表的所有节点连接起来。如果涉及到链表节点的插入和删除操作,则只需要修改链表节点的指针即可。 这种方式有个明显的缺点,就是不能随机存取。如果要在某个节点之后插入或者删除节点,复杂度是O n ,因为要从头开始逐个遍历到需要插入或者删除的节点 通过next指针找 。所以用结构体实现的单链表缺点就是太慢了 ...
2020-07-15 20:33 0 1187 推荐指数:
手撕HashMap主要是为了能更好的理解HashMap的数据结构原理。只实现了 put、get、remove。 JDK 实现的实在太复杂。这个实现是实现最简单的版本。后续如果有时间会逐一补上 自动扩容,数组+红黑树的实现。 前提条件 数组+链表有基本了解 实现逻辑 ...
一、数组 数组特点:查询快,增删慢 二、链表 链表分为单向链表和双向链表(包括双向循环链表) 链表特点:查询慢,增删快 单向链表:表头为空,下一个节点是10. 双向链表:每个节点都有前驱指针和后继指针 双向循环链表:表头为空,表头的后继结点是10 ...
我以前用JavaScript写过栈和队列,这里初学Java,于是想来实现栈,基于数组和链表。 下面上代码: 下面是我的运行结果: 如有不对,欢迎批评指正。 ...
引言 什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中。 比 ...
本文主要是数组和链表两种结构,关于归并排序算法的递归实现和非递归实现 思想 将数组进行分割,形成多个组合并继续分割,一直到每一组只有一个元素时,此时可以看作每一组都是有序的 然后逐渐合并相邻的有序组合(合并之后也是有序的),分组个数呈倍数减少,每一组的元素个数呈倍数增长 一直到只剩下 ...
//基于数组的队列实现 public class MyArrayQueue<T> { private T[] items; private int size; private int head ...
转载请注明出处,部分内容引自百度百科、谭浩强《C程序设计》、蜗牛君的奋斗史大神的博客 前置知识: C语言入门 数组党的福音(本蒟蒻学链表时不会指针,然而好像所有人都拿指针写)首先,我们需要知道什么是链表百度百科看不懂勿喷(毕竟百度百科也不是用来让人看懂的)我们可以从中得出链表 ...
前言 数组和链表是两种数据结构,数组非常简单易用但是它有两个非常大的缺点,一个是数组一旦创建无法扩展,另一个则是数组的查找和删除的速度很慢. 链表改善了一些数组的缺点,但是同样的链表自身也存在一些自己的缺点. 本篇博客将为大家介绍一下这数组和链表特点及各自的优缺点. 阅读前的准备工作 ...