![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法笔记
向光.
路过人间,绝非一瞬间.
展开
-
数据结构与算法Java——栈/栈实现第一版计算器
栈的介绍1)栈的英文为(stack)2)栈是一个先入后 出(FILO-First In Last Out)的有序列表。3)栈(stack)是限制线性表 中元素的插入和删除只能在线性表的同-端进行的一种特殊线性表。 允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。4)根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除5)图解方 式说明出栈( pop)和入栈(push)原创 2022-01-09 10:33:03 · 313 阅读 · 0 评论 -
单向环形链表——解决约瑟夫问题Java
Josephu问题Josephu问题为:设编号为1, 2, …n的n个人围坐一圈,约定编号为k (1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。思路:我们不妨创建一个单向环形链表来模拟这种情况,根据小孩的出列断开不同的节点,连接新的节点进行模拟。代码:package 链表;public class JosePhu问题 { public static voi原创 2022-01-09 08:48:22 · 195 阅读 · 0 评论 -
数据结构与算法Java——链表
链表1.单向链表代码实现:package 链表;import java.util.Stack;/** 单向链表* 由于单链表的单向性,我们在遍历等操作时往往要使用temp.next来先判断一下下个节点的状况,这样是为了在删除等操作时,我们还能得到被删除* 节点的上一个节点是哪一个,不然我们若直接删除temp,由于单向性我们拿不到其上一个节点了,而因为有next指针所以可以拿到下一个节点。* 也因此我们专门设置了一个不含信息的头指针作为火车头来起到引导作用,其可以不加,但是加了更容易理解原创 2022-01-09 08:45:05 · 83 阅读 · 0 评论 -
数据结构与算法Java——队列
队列1.数组模拟一次性队列代码实现package 队列;/** 数组模拟一次性队列** 这里在使用数组实现该队列时思维比较简单,但也同样使得该队列有些相当于 “一次性队列” ,即如果用很多次的话,可能就因为rear移动到* 尾部,导致不能使用了;** 这里使用双指针思想来使用数组实现队列,这样的好处是实现起来简单,但是队列内存不能复用,因为原先队列内元素占据的内存直接随着指针* 的移动所舍弃了,即在删除元素时没有真正的删除;* */public class ArrayQueue原创 2022-01-09 08:43:27 · 85 阅读 · 0 评论 -
数据结构与算法Java——稀疏数组
稀疏数组当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模代码实现:package 稀疏数组;import java.util.Arrays;public class 稀疏数组代码实现 { public static void main(String[] args) { int[][] res =原创 2022-01-09 08:42:00 · 325 阅读 · 0 评论