
数据结构与算法
即心即佛
这个作者很懒,什么都没留下…
展开
-
Java单向链表反转
要求给出单链表的头节点 head ,要求反转链表,并返回反转后的链表。实现原理单向链表反转就是将链表的指针方向改变。由于单链表没有指向前一个结点的指针,所以,我们定义一个指向前一个节点的指针pre,用于存储每一个节点的前一个结点;定义一个保存当前节点的指针cur以及下一个节点指针的next。定义好之后,遍历单链表,将next指向cur的下一个节点,将cur的next指向pre(此时链表是断开状态),pre向后移动,cur向后移动,直至遍历到最后一个结点为止。代码实现public cl原创 2021-09-01 14:24:55 · 1380 阅读 · 0 评论 -
Java后序输出单向链表
要求从尾到头遍历链表,并且不能改变原链表。实现原理利用栈先进后出的原理实现代码实现public class LinkedList { public static void reverseShow(Node head){ if (null == head){ return; } Stack<Node> stack = new Stack<>(); Node temp = head原创 2021-09-01 14:02:22 · 118 阅读 · 0 评论 -
Java数组实现环形队列
环形队列环形队列是一个首尾相连的FIFO的数据结构,采用数组的线性空间,数据组织简单。能很快知道队列是否满为空。能以很快速度的来存取数据。环形队列实现原理本章环形队列使用数组实现,当数据到了数组尾部,利用取模的方式将转回到0的位置。由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front==rear来判别队列是"空"还是"满"。解决这个问题的方法有三种(使用第二种方式实现):另设一布尔变量以区别队列的空和满;少用一个元素的空间。约定原创 2021-08-30 20:48:41 · 383 阅读 · 0 评论 -
Java稀疏数组
稀疏数组介绍当数组中大部分元素为0或者为同一值的时候,可以利用稀疏数组减少对存储资源的占用。稀疏数组只适用于数据稀疏的情况。当数组中存储的的数据过多的时候,存储在稀疏数组中的数据量,可能比原数组的中数据量还大,就不适用了。稀疏数组工作原理记录数组中一共有几行几列,一共有多少个有效元素。稀疏数组一共三列,第一行第一列用来记录原始数组的行数,第一行第二列用来记录原始数组的列数,第一行第三列用来记录有几个有效元素。第二行及以后第一列记录有效元素所在行,第二列记录有效元素所在列,第三列记录有效元素的值。原创 2021-08-27 16:04:38 · 251 阅读 · 0 评论