数据结构
陈华杰
数学与编程的热爱者
展开
-
java数据结构:单链表结构与实现
本教程的内容基本来自于《Java数据结构与算法》单向链表是最基本的数据结构之一,链表中的基本单位是节点,节点包含数据和其他节点的指针。不同于数组的是,链表中的数据存储地址在物理上不是连续的,而是使用指针来指向下一节点。 每个节点有数据区(data)和指向下一节点的指针(next),当next指针指向null时,表示链表的尾节点。单个节点定义class Link{ pu原创 2018-01-26 11:52:27 · 474 阅读 · 0 评论 -
java数据结构:双向链表结构与实现
本教程的内容基本来自于《Java数据结构与算法》单向链表的缺点在于每个节点只能知道自己与下一个节点,无法寻找到上一个节点。而双向链表可以解决这个问题,通过在节点内部添加一个previous指针,指向它的前一节点。双向链表示意图图中所示为双向链表,与单向链表相比,只不过是多引入了一个指向前一节点的previous指针而已。优点:支持向前遍历,也支持向后遍历; 缺点:在对链表进行原创 2018-01-26 20:57:12 · 3286 阅读 · 2 评论 -
java数据结构:栈与实现
本教程的内容基本来自于《Java数据结构与算法》栈是一种先进后出的数据结构,如下图。第一个压入的元素总是在栈底,最后压入的元素总是在栈顶,结构就像盒子装东西一样。压入元素称为入栈,取出元素称为出栈。使用数组来实现一个栈,只需使用一个指向栈顶的指针即可。1.初始化栈class Stack{ private int maxSize; //...原创 2018-03-14 20:28:03 · 181 阅读 · 0 评论 -
java数据结构:队列与实现
本教程的内容基本来自于《Java数据结构与算法》队列是一种先进先出的数据结构,如下图。 每次进来新的元素,总是在队列的尾部插入;每次取出队列元素,总是在头部。队列的结构来自于生活中的排队机制。插入元素称为入队,取出元素称为出队。使用数组实现队列,需要两个指针,一个队尾指针,一个队头指针。1.初始化队列class Queue{ private int rear; ...原创 2018-03-15 10:42:29 · 394 阅读 · 0 评论 -
java数据结构:二叉搜索树
本教程的内容基本来自于《Java数据结构与算法》树类型的数据结构是最通用的数据结构之一。树由节点和边构成,在其顶层只有一个根节点,从根节点向下蔓延到子节点,而子节点又可以继续向下蔓延。节点用来存放数据,边用来描述两个节点之间的关系,下图就是一种树的结构 二叉树是一种特殊的树形结构,其每个节点最多包含两个子节点,分别称为左子节点和右子节点,含有这样关系的节点称为父节点和子节点。如...原创 2018-03-16 18:09:22 · 194 阅读 · 0 评论 -
java数据结构:基于树的堆
本教程的内容基本来自于《Java数据结构与算法》 堆一种是一种特殊的二叉树结构,包含如下特点: 它是完全二叉树,即除了最后一层节点不是满的,其他层节点从左到右都完全是满的; 一般使用数组来存储堆数据结构; 堆中每个节点的关键字都大于等于(小于等于)这个节点的子节点的关键字,节点关键字大于等于子节点的关键字成为最大堆;反之,称为最小堆。 下图显示了完全二叉树与非完全...原创 2018-05-20 11:05:45 · 1206 阅读 · 0 评论 -
最全面的排序算法详解——冒泡、插入、归并、快速....
本教程旨在最全面的介绍排序算法包括原理与性能方面的比较。下文中的排序算法都以升序为例进行讲解。1.冒泡排序比较简单的排序算法之一,其原理是通过比较相邻的元素,将最大值以冒泡的形式交换到最后面。以数组42,3,12,25,9,21为例,如下图所示 原始数组: 基本思想: 相邻的两个数相比较,如果前面的数大于后面的数,就交换两个数,或者不改变数组按照基本思想,第一次比较42与...原创 2018-05-16 21:27:26 · 1308 阅读 · 0 评论