欢迎您的访问
专注于Java技术系列文章的Java技术分享网站

数据结构汇总

手写数据结构-基于最大堆实现的优先队列

站长阅读(530)评论(0)赞(78)

一.优先队列基础 普通队列:先进先出/ 优先队列:出队顺序和入队顺序无关;和优先级相关 1、为什么使用优先队列? 动态选择优先级最高的任务 如操作系统任务管理。 二.手写基于最大堆的优先队列及复杂度分析 package com.tc.jav...

手写数据结构-基于动态数组实现的二叉堆

站长阅读(529)评论(0)赞(81)

1、堆基础 二叉堆的定义: 1、二叉堆是一个完全二叉树结构。完全二叉树不一定是一个满二叉树。完全二叉树左节点必须是满的,右节点为可以为空。把元素一层一层的从左往右依次排列。 2、当满足该节点的左右孩子节点都小于该节点时,称为最大堆。反之,当...

手写数据结构-二分搜索树

站长阅读(526)评论(0)赞(83)

1、二分搜索树基础 1、为什么要有树结构? 将数据使用树结构存储后,出奇的高效。 常见的树结构:二分搜索树/平衡二叉树(AVL 红黑树)/堆/优先队列..等 2、二叉树特点 二叉树具有唯一根节点 二叉树每个节点最多有两个孩子,每个节点最多有...

手写数据结构-基于链表的队列

站长阅读(526)评论(0)赞(61)

1、基于链表的队列基础 结构特性:先进先出 实现原理:采用双指针,多维护一个指针指向队尾,向尾部进行添加操作时间复杂度会变为O(1)。 2、手写基于链表的队列及复杂度分析(和基于动态数组的循环队列对比) package com.tc.jav...

手写数据结构-基于链表的栈

站长阅读(526)评论(0)赞(74)

1.栈基础 结构:先进后出 2.手写基于链表的栈(和基于动态数组的栈对比) package com.tc.javabase.datastructure.linklist.stack; import com.tc.javabase.datas...

手写数据结构-链表

站长阅读(525)评论(0)赞(99)

1.链表基础 之前讲到的动态数组、栈、队列,底层都是依托静态数组,靠resize解决固定容量问题。而链表是一种真正的动态线性的数据结构。 数据储存在节点(Node)中,优点: 真正的动态,不需要处理固定容量问题,缺点:丧失了随机访问的能力。...

手写数据结构-基于动态数组的循环队列

站长阅读(528)评论(0)赞(95)

1.循环队列 在基于动态数组的队列中我们发现,在移出队首元素时时间复杂度为O(n),为了解决这个问题,我们引出了循环队列。 实现原理:双指针,多维护一个指针指向队首,当队首元素移出时,基于数组实现的队列中的元素不需要全部向前移动一个位置,只...

手写数据结构-基于动态数组的队列

站长阅读(528)评论(0)赞(92)

1.队列基础 队列是一种先进先出的数据结构(先到先得 First In First Out) 队列也是一种线性结构 相比于数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,从另一端(队首)取出元素 2.手写基于动态数组的队列及复...

一个专注于Java技术系列文章的技术分享网站