![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java数据结构
waldeinNJU
这个作者很懒,什么都没留下…
展开
-
中序线索化二叉树
中序线索化二叉树1. 简介2. 中序线索化的方法3. 代码详细4. 测试1. 简介对于二叉树来说,只能是很直观地知道某个节点及其左右子节点,但是如果想知道此节点按照某种方式遍历时的前一个节点(前继节点)和后一个节点(后继节点)的话,就不得不按照此种遍历方式对二叉树遍历一次,只有这样才能知道前继或后继节点。因此,==为了避免这种不得不遍历的麻烦,是否可以寻找一种简便的方式从而更快地获取某节点的前继或后继节点?==我认为这是对二叉树线索化的主要原因。另一方面是涉及到资源利用的问题。如上图所示,二叉树共有原创 2020-10-26 16:13:45 · 25629 阅读 · 4 评论 -
栈(后缀表达式的计算)
后缀表达式简单后缀表达式的计算后缀表达式的计算(完全)简单后缀表达式的计算就我个人来说,后缀表达式看起来很别扭,但是从变成来看,后缀表达式的处理比中缀表达式的处理方便很多。中缀表达式:( 30 + 4 ) x 5 - 6 = 164后缀表达式:30 4 + 5 x 6 - = 164对于中缀表达式而言,一般需要两个栈:数栈和符号栈,并且处理过程中需要注意括号运算。就上面的中缀表达式来看,先计算括号里的+,再计算x,最后计算 - 。但是,就后缀表达式来看,表达式中的运算符号出现顺序与中缀表达式对应的原创 2020-09-12 15:12:37 · 2245 阅读 · 0 评论 -
栈(中缀表达式的计算)
关于栈和中缀表达式的理解和处理程序栈的理解中缀表达式假如运算符只有+、-、*、/,且是单位数运算假如运算符不仅有+、-、*、/,还有()运算符,且同样是单位数运算栈的理解栈是一种数据结构,通常可以概括为“先入后出”。仿佛乡下堆草垛一般,堆的时候是从底下往上面一层层叠加,取的时候却是从上面往底下一层层摘出。可以以此来类比栈的结构与操作过程。栈的实现方式有很多,比如数组、链表等等。一般而言,用数组比较简单点,但是长度固定,不易扩充;用链表的话,不用限制长度,可以任意添加节点,但是操作方面要复杂一点。原创 2020-09-08 15:00:37 · 2575 阅读 · 0 评论 -
环形链表
环形链表介绍环形链表其实很有意思,可以把环形链表看作将单链表或者双向链表的首尾两端相连而得到的。比如,若是将单链表的首尾两端相连,那么会得到一个顺时针方向或者是逆时针方向遍历的环形链表(注意只能是一个方向),比如这个样子:若是将双向链表的首尾两端相连的话,则会得到一个既可以顺时针方向也可以逆时针方向遍历的环形链表,比如这个样子:从逻辑关系上看,环形链表是不分首尾的。但是程序中为了遍历、查找等操作的方便,可以设置一个first节点(实际上就相当于一个入口节点,所有的环形链表操作可以从此节点开始),比原创 2020-08-27 16:27:05 · 290 阅读 · 0 评论 -
双向链表
双向链表介绍双向链表,顾名思义,对于链表中的每个节点而言,不仅仅存在指向下个节点的地址域,还存在指向上个节点的地址域,所以可以同时往上、往下溯源。我一般都会设置带有头节点的双向链表。在头节点中,数据域和指向上个节点的地址域都为null,仅仅表示链表从此节点开始,就像下面这个图片描述的:对于最后一个节点Node2而言,它的指向下个节点的地址域为null,这可以作为链表结束的判断标志。双链表的Java实现1. 构造节点类class Node{ // 数据 public int n原创 2020-08-27 15:58:24 · 191 阅读 · 0 评论 -
单链表
Java数据结构 — 单链表单链表介绍单链表的理解应该可以分为两部分:链表中的节点和节点之间的联系。与数组的不同之处在于:数组在物理上的存储是连续的,但是链表在物理上的存储是分散的,它仅仅是在逻辑结构上连续(逻辑上的“一条龙”)。对于链表中的节点可以看作一个存储单元,这个存储单元中包括两部分:数据域(或者叫数据块)和地址域(或者叫地址块)。数据域是用来保存当前节点的数据,地址域是用来指向下一个节点在哪的。节点之间的联系体现在各个节点的地址域中。通过第一个节点的地址域可以知道第二个节点在哪,通过第原创 2020-06-24 14:51:05 · 278 阅读 · 0 评论