数据结构
文章平均质量分 54
舒克日记
努力分享算法数据结构小知识
展开
-
数组实现环形队列 详细讲解(java)
数组实现环形队列 详细讲解数组模拟环形队列对前面的数组模拟队列的优化,将数组看做是一个环形的。(通过取模的方式来实现即可)解题思路1、既然是环形队列,那就一定有头有尾,有容量2、既然是数组实现,那一定有个算法保证可以让数组循环起来如图所示:rear为7 ,front为0,实际的数据为7,是因为rear定义指向了最后一个元素的后一个位置,所以满数组的size变成了size-1,空出的位置来保证循环front 变量的含义做一个调整: front 就指向队列的第一个元素, 也就是说 arr[f原创 2022-04-23 17:08:09 · 1404 阅读 · 0 评论 -
稀疏数组(详解)
稀疏数组基本介绍先看一个实际的需求编写的五子棋程序中,有存盘退出和续上盘的功能。分析问题:因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组。转化为稀疏数组代码示例package com.qf;public class SparseArray { public static void main(String[] args) { /** * 稀疏数组 0代表默认状态下 1代表的是黑色 2代表的蓝色原创 2022-04-20 23:20:32 · 360 阅读 · 0 评论 -
数组实现队列 详细讲解(java)
数组实现队列 详细讲解队列的介绍队列的一个使用场景银行排队的案例数组模拟队列的思路:1、定义一个数组 arr[maxSize] 作为该队列2、rear定义为队尾指针3、front定义为对头指针4、入队addQueue,将队尾指针往后移,rear+1的情况下,要判断队列的元素是否已满,已满的条件为rear=maxSize-1;5、出队outQueue,将队头的元素往后移,front+1的情况下,要判断队列的元素是否为空,为空的条件为rear=front;代码实现package c原创 2022-04-23 16:56:02 · 2263 阅读 · 4 评论 -
单向链表栈的java实现 详细讲解
单向链表栈的java实现 详细讲解文章目录前言一、栈是什么?二、实现步骤1.定义node节点2.栈结构的定义3.栈的判断3.1判断是否已满3.2判断栈是否为空4.栈的操作4.1入栈4.2出栈5.(逆序)遍历所有栈节点代码整合总结前言工作之余,学习一下数据结构与算法,今天学习数据结构:“栈”。笔者有一个坏习惯,一看就会,一写就废。所以笔者准备亲自写使用单向链表实现栈提示:以下是本篇文章正文内容,下面案例可供参考一、栈是什么?小编的理解:1.一串有顺序的结构2.只能从同一个位置取出元.原创 2022-04-28 11:43:38 · 504 阅读 · 1 评论 -
栈实现综合计算器 java 详细讲解
栈实现综合计算器 java 详细讲解案例解题思路代码实现package com.qf.stack;public class Caculator { public static void main(String[] args) { StackArray numArray=new StackArray(20); StackArray operateArray=new StackArray(20); int index=0;原创 2022-04-28 20:46:29 · 282 阅读 · 0 评论 -
单向链表的java实现 详细讲解
链表的介绍概念链表是有序的列表,但是它在内存中是存储如下小结:链表是以节点的方式来存储,是链式存储每个节点包含 data 域, next 域:指向下一个节点.如图:发现链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表的应用实例案例使用带head头的单向链表实现 –水浒英雄排行榜管理完成对英雄人物的增删改查操作, 注: 删除和修改,查找解题思路1、增加2、顺序添加(按照no由小到大排序)3、修改和删除节点(原理差不多)原创 2022-04-24 22:34:26 · 1469 阅读 · 0 评论 -
数组实现栈 详细讲解(java)
栈的概念栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除栈的应用场景子程序的调用:在跳往子程序前,会先将下个指令的地址原创 2022-04-27 22:09:26 · 648 阅读 · 0 评论 -
双向链表的java实现 详细讲解
链表的介绍概念双链表顾名思义,就是链表由单向的链变成了双向链。 使用这种数据结构,我们可以不再拘束于单链表的单向创建于遍历等操作,大大减少了在使用中存在的问题。基于单链表的优化1.单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。2.单向链表不能自我删除,需要靠辅助节点 ,而双向链表,则可以自我删除,单链表删除时节点,总是找到temp,temp是待删除节点的前一个节点(认真体会).双向链表的图解双向链表(增删改查)的实现思路代码实现package com.qf.lin原创 2022-04-26 23:57:28 · 1455 阅读 · 1 评论 -
单向环形链表应用场景(约瑟夫问题的讲解) java详细讲解
单向环形链表应用场景约瑟夫问题Josephu(约瑟夫、约瑟夫环) 问题Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,然后再从被删除结点的下原创 2022-04-27 21:23:29 · 1383 阅读 · 0 评论 -
图 详细讲解
1、为什么要有图1、前面我们学了线性表和树2、线性表局限于一个直接前驱和一个直接后继的关系3、树也只能有一个直接前驱也就是父节点3、当我们需要表示多对多的关系时, 这里我们就用到了图2、图的举例说明图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:3、图的常用概念顶点(vertex)边(edge)路径无向图(右图)有向图带权图无向图:顶点之间的连接没有方向,比如A-B,即可以是 A-> B 也可以 B->原创 2022-05-25 00:10:34 · 245 阅读 · 0 评论