数据结构与算法学习(第一天 循环队列)
一、线性结构和非线性结构
一、线性结构
1.特点:数据元素之间存在一对一的线性关系
2.有两种不同的存储结构顺序存储结构(数组)、链式存储结构(链表)顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的
3.链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
4.线性结构常见的有:数组、队列、链表和栈
二、非线性结构
1.二维数组、多维数组、广义表、数结构、图结构
二、稀疏数组
二维数组转稀疏数组的思路
1.遍历原始的二维数组,得到有效数据的个数sum
2.根据sum就可以创建稀疏数组sparseArr int[sim+1][3]
3.将二维数组的有效数据存入到稀疏数组
稀疏数组转原始二维数组思路
1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面chessArr = int[11][11]
2.在读取稀疏数组后几行的数据,并赋予原始二维数组即可
三、队列
1.队列是一个有序列表,可以用数组或事链表来实现
2.遵循先入先出的原则,即:先存入队列的数据要先取出,后存入的要后取出
数组模拟循环队列(通过取模的方式)
思路
1.front变量:front就指向队列的第一个元素,也就是说arr[front]就是队列的第一个元素,front的初始化为0
2.rear变量:rear指向队列的最后一个元素的后一个位置,因为希望空出一个空间作为约定,rear的初始化为0
3.当队列满是,条件是(rear+1)% maxSize == front
4.当队列为空,条件是 rear == front
5.队列中有效数据的个数 (rear + maxSize -front)%maxSize
public class Structure{public static void main(String[] args) {CircleStructure circleStructure = new CircleStructure(3);circleStructure.add(1);circleStructure.add(2);circleStructure.add(3);circleStructure.showQueue();}
}class CircleStructure {//构造方法public CircleStructure(int maxSize) {this.maxSize = maxSize;this.arr = new int[maxSize];}private int maxSize;private int front;private int rear;private int[] arr;//是否已满private boolean isFull(){return (rear +1)% maxSize == front;}//是否为空private boolean isNull(){return rear == front;}//数值多大private int size(){return (rear+maxSize-front)%maxSize;}//添加public int add(int number){if(isFull()){return 0;}arr[rear] = number;rear = (rear +1)% maxSize;return 1;}//获取public int get(){if(isNull()){return 0;}int value = arr[front];front = (front +1) % maxSize;return value;}//展示队列public int showQueue(){if(isNull()){return 0;}for(int i = front; i<front+size();i++){System.out.println(arr[i]+" "+i%maxSize+" "+arr[i%maxSize]);}return 1;}//头节点public int headQueue(){if(isNull()){return 0;}return arr[front];}
}
数据结构与算法学习(第一天 循环队列)相关推荐
- 数据结构与算法学习笔记之先进先出的队列
前言 队列是一种非常实用的数据结构,类似于生活中发排队,可应用于生活,开发中各个方面,比如共享打印机(先请求先打印),消息队列.你想知道他们是怎么工作的么.那就来一起学习一下队列吧 正文 一.队列的定 ...
- 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)
数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...
- LeetCode数据结构与算法学习Day03
LeetCode数据结构与算法学习Day03 图解数据结构与算法 59 I 滑动窗口最大值 题目描述: 解题思路: 59 II 队列的最大值 题目描述: 解题思路: 67 把字符串转换成整数 题目描述 ...
- 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)
数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...
- 七桥问题c语言程序数据结构,数据结构与算法学习——图论
什么是图? 在计算机程序设计中,图结构也是一种非常常见的数据结构 但是图论其实是一个非常大的话题 图结构是一种与树结构有些相似的数据结构 图论是数学的一个分支,并且在数学概念上,树是图的一种 它以图为 ...
- 数据结构与算法学习笔记——链栈
数据结构与算法学习笔记(C语言) 链栈 在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现. /*用顺序栈这种数 ...
- 算法学习-单调双端队列
文章目录 基础知识 算法模板 相关题目 239.滑动窗口最大值 1438.绝对差不超过限制的最长连续子数组 862.和至少为K的最短子数组 1425.带限制的子序列和 1499.满足不等式的最大值 2 ...
- 数据结构与算法学习⑥(动态规划 题解 背包和打家劫舍问题)
数据结构与算法学习⑥(动态规划 动态规划 1.初识动态规划 1.1.从贪心说起 1.1.1.贪心的特点 1.1.2.贪心的局限性 1.1.3.贪心失效后怎么办 1.1.4.从最优化问题到递归 1.2. ...
- c语言将AOE网络的数据写入TXT文档中,数据结构与算法学习辅导及习题详解.张乃孝版-C/C++文档类资源...
数据结构与算法学习辅导及习题详解.张乃孝版.04年10月 经过几年的努力,我深深体会到,编写这种辅导书要比编写一本湝通教材困难得多. 但愿我的上述理想,在本书中能够得以体现. 本书的组织 本书继承了& ...
- 数据结构与算法学习笔记——图 C++实现
数据结构与算法学习笔记--图 C++实现 1 概念 2 图的表示方法 3 算法 3.1 拓扑排序 3.2 图的搜索算法 3.2.1 广度优先搜索(BFS) 3.2.2 深度优先搜索(DFS) 3.3 ...
最新文章
- C++中四种类型转换方式
- alternatives命令使用方法
- 学习Javascript的书籍(转)
- 採集和输出 DeckLink Studio 4K
- stm32 vscode 编译_STM32开发之 VSCode+gcc环境编译
- javascript的数组形式与php的数组形式
- IntelliJ Idea14 创建Maven多模块项目,多继承,热部署配置总结(一)
- 拓端tecdat|R语言基于Garch波动率预测的区制转移交易策略
- Oracle数据库学习笔记
- 数字图像处理 冈萨雷斯(第四版)图像配准
- Word 转 PDF 后目录链接无效的解决办法
- 如何下载太原市卫星地图高清版大图
- IC验证笔试题(平头哥)
- css英文字体 在线引用,css字体英文名称(示例代码)
- Linux 功能强大的 路由器,一款功能强大的路由器系统-软路由-RouterOS
- 【参赛作品12】基于华为云鲲鹏弹性云服务器部署openGauss数据库-实验
- 【Web技术】919- 前端关于单点登录的知识
- 多媒体制作技术心得体会_交互式多媒体课件制作的一点心得体会
- java 对List按照某个字段分组
- 【OpenGL】十八、OpenGL 绘制多边形 ( 绘制 GL_POLYGON 模式多边形 )
热门文章
- 趣味计算机冷知识,20个趣味冷知识:第10个也太好玩了!
- starnet php,webstar php留言板 v6.0 正式版
- SpringBoot 错误 : Failed to configure a DataSource: 'url' attribute is not specified and no embedd
- 【论文写作】毕业论文写作中致谢词的常见写法及优秀范文
- 【欧式距离:二维和三维定位算法】
- 01.浏览器的工作原理
- ffmpeg把图片生成视频
- 王者ios系统怎么查自己在哪个服务器,安卓王者荣耀怎么查看iOS系统的 | 手游网游页游攻略大全...
- youdian cms 数据库以及结构
- 仿今日头条“关注”按钮的实现