
数据结构和算法
夢里花落知多少
这个作者很懒,什么都没留下…
展开
-
数据结构与算法:使用数组和链表实现栈
栈的介绍栈的英文为(stack) 栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除思路数组实现栈代码package com.struc原创 2021-07-26 14:12:40 · 162 阅读 · 0 评论 -
数据结构与算法:使用单向环形链表解决约瑟夫问题
约瑟夫问题描述编号为1,2,3,?,n的n个人按顺时针方向围坐一圈,每人手持一个密码(正整数)。一开始任选一个整数作为报数上限值,从第一人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将它的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去直到所有人全部出列为止。其实就是丢手绢的问题 比如 5 个人玩游戏(n=5) ,从 1 开始数 数到2(m=2)的人出列。 那么五个人出列的 顺序是 2 -> 4 -> 1 -> 5 ->原创 2021-07-23 14:01:02 · 164 阅读 · 0 评论 -
数据结构与算法:双向链表的增删改查和链表反向打印
双先链表的特点1.每个元素持有它上下节点的引用2.可以从前往后遍历,也可以从后往前遍历代码如下package com.structure.linked;/** * @author zzq * @Date 2021-07-21 14:39 */public class DoubleLinkedListDemo { public static void main(String[] args) { DoubleLinkedList list = new DoubleL原创 2021-07-22 14:30:01 · 164 阅读 · 0 评论 -
数据结构与算法:单向带头节点链表的增删改查和链表反向输出
链表的基本特性1.链表是一种链式结构2.链表在逻辑上是有序的3.链表在实际的内存中不一定是连续的4.链表有带头结点和不带头结点的两种实现本文主要讲解单向带头结点的链表增删改查操作链表的逻辑结构图链表的内存示意图代码实现如果代码不太好理解,可以自己画一下流程图比如顺序插入时package com.structure.linked;/** * @author zzq * @Date 2021-07-20 9:04 */public class SingleLinkedLi原创 2021-07-20 14:24:05 · 188 阅读 · 0 评论 -
数组模拟环形队列实现
环形队列介绍环形队列是一种头尾相连的结构,可以用数据或者链表来实现,本文通过数组实现。1.队列的基本特性是先进先出,所以添加元素时尾部指针往后移,获取元素时,从队列头获取。2.队列为空时,头尾指针都为0添加元素时指针变化add(1) tail 0 -> 1 head 0add(2) tail 1 -> 2 head 0add(3) tail 2->3 head 0···add(7) tail 6 ->7 head 0 此时队列满获取元素时指针变化(接上面的数原创 2021-07-19 15:49:33 · 648 阅读 · 0 评论 -
二维数组和稀疏数组互转,二维数组文件读写
稀疏数组的基本概念记录数组一共有几行几列,有多少不同的值。把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。该小规模数组就是稀疏数组稀疏数组的用途可以将原始的二维数组进行简单化存储,缩小占用空间稀疏数组应用案例五子棋棋盘二维数组存储,转为稀疏数组存储代码实现二维数组转稀疏数组稀疏数组转二维数组二维数组写入文件读取文件转化为二维数组package com.structure.sparse;import com.alibaba.fastjson.J原创 2021-07-14 17:15:58 · 139 阅读 · 0 评论