DataStructure
景谦Nice
这个作者很懒,什么都没留下…
展开
-
【Java数据结构】Java环形链表实现约瑟夫(Josephus)问题
约瑟夫问题 约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)详见百度百科。 “丢手绢”游戏模拟约瑟夫问题 这里用小孩子们玩的“丢手绢”游戏来说明和演示约瑟夫问题:n个小孩围成一圈,从第k个小孩开始从1报数,数到m的小孩时将手绢丢给他,拿到手绢的小孩自动出列,然后再让出列的小孩的下一个小孩开始从1报数,数到...原创 2020-01-12 19:50:43 · 294 阅读 · 0 评论 -
【Java数据结构】双向链表
双向链表简介 对于双向链表来说,它的每个节点都有两个部分组成:pre域、data域和next域 pre域存储的是上一个节点的内存地址; data域存储当前节点的数据; next域存储的是下一个节点的内存地址。如下图: 链表也可分为带头结点的链表和不带头结点的链表 带头结点的链表的头节点的data域是空的,主要是利用头结点的next域,类似于不坐乘客的火车头; 不带头结点的链表的每个节点都用...原创 2020-01-12 14:51:46 · 326 阅读 · 0 评论 -
【Java数据结构】单向链表
单向链表简介 链表是链式存储的有序的数据结构,但是它在内存中的地址却不一定是连续的,因此它的优点是可以利用内存中的碎片空间 对于单向链表来说,它的每个节点都有两个部分组成:data域和next域 data域存储当前节点的数据; next域存储的是下一个节点的内存地址。如下图: 链表也可分为带头结点的链表和不带头结点的链表 带头结点的链表的头节点的data域是空的,主要是利用头结点的next域,...原创 2020-01-04 22:08:47 · 190 阅读 · 0 评论 -
【Java数据结构】用数组模拟队列与环形队列
应用场景 银行、医院等场所的叫号系统等,先拿到号码的人先被服务,后拿到号码的人后被服务,这个时候就用到了队列 队列 队列是一个有序列表,可以用数组或是链表来实现 队列遵循先入先出的原则:即先存入队列的数据先取出,后存入的数据后取出 数组模拟队列示意图及思路: 其中MaxSize表示该队列的最大容量 由于队列的输出和输入分别由前后端来处理,因此需要两个变量来记录队列前后端的下标,其中 front...原创 2019-12-02 23:48:13 · 214 阅读 · 0 评论 -
【Java数据结构】稀疏数组
需求 编写的五子棋程序中,有存盘退出和续上盘的功能。首先想到用二维数组! 但问题来了:因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据,这怎么办呢?用稀疏数组! 稀疏数组 当一个数组中大部分存储的都是0或者为同一个数值时,可以用稀疏数组来保存该数组。稀疏数组是这么干的: 将原数组的行列数及不同数据的个数作为一个长度为3的一维数组 分别将原数组中有效数据的行、列、及该位置存放的数...原创 2019-12-01 15:32:21 · 134 阅读 · 0 评论 -
【Java数据结构】线性结构和非线性结构
线性结构和非线性结构 数据结构包括:线性结构和非线性结构 线性结构: 线性结构在数据元素之间存在一对一的关系 线性结构有两种存储结构:顺序线性结构和链式存储结构 顺序存储的线性表称为顺序表,其中存储的元素地址是连续的;链式存储的线性表称为链表,链表中存储的元素不一定是连续的,元素节点中存放数据元素和相邻元素的地址信息,其优点是可以利用内存的碎片空间 线性结构常见的有:一维数组、链表、队列和栈 ...原创 2019-12-03 08:37:24 · 173 阅读 · 0 评论