一、线性结构和非线性结构

一、线性结构

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];}
}

数据结构与算法学习(第一天 循环队列)相关推荐

  1. 数据结构与算法学习笔记之先进先出的队列

    前言 队列是一种非常实用的数据结构,类似于生活中发排队,可应用于生活,开发中各个方面,比如共享打印机(先请求先打印),消息队列.你想知道他们是怎么工作的么.那就来一起学习一下队列吧 正文 一.队列的定 ...

  2. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

  3. LeetCode数据结构与算法学习Day03

    LeetCode数据结构与算法学习Day03 图解数据结构与算法 59 I 滑动窗口最大值 题目描述: 解题思路: 59 II 队列的最大值 题目描述: 解题思路: 67 把字符串转换成整数 题目描述 ...

  4. 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)

    数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...

  5. 七桥问题c语言程序数据结构,数据结构与算法学习——图论

    什么是图? 在计算机程序设计中,图结构也是一种非常常见的数据结构 但是图论其实是一个非常大的话题 图结构是一种与树结构有些相似的数据结构 图论是数学的一个分支,并且在数学概念上,树是图的一种 它以图为 ...

  6. 数据结构与算法学习笔记——链栈

    数据结构与算法学习笔记(C语言) 链栈 在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现. /*用顺序栈这种数 ...

  7. 算法学习-单调双端队列

    文章目录 基础知识 算法模板 相关题目 239.滑动窗口最大值 1438.绝对差不超过限制的最长连续子数组 862.和至少为K的最短子数组 1425.带限制的子序列和 1499.满足不等式的最大值 2 ...

  8. 数据结构与算法学习⑥(动态规划 题解 背包和打家劫舍问题)

    数据结构与算法学习⑥(动态规划 动态规划 1.初识动态规划 1.1.从贪心说起 1.1.1.贪心的特点 1.1.2.贪心的局限性 1.1.3.贪心失效后怎么办 1.1.4.从最优化问题到递归 1.2. ...

  9. c语言将AOE网络的数据写入TXT文档中,数据结构与算法学习辅导及习题详解.张乃孝版-C/C++文档类资源...

    数据结构与算法学习辅导及习题详解.张乃孝版.04年10月 经过几年的努力,我深深体会到,编写这种辅导书要比编写一本湝通教材困难得多. 但愿我的上述理想,在本书中能够得以体现. 本书的组织 本书继承了& ...

  10. 数据结构与算法学习笔记——图 C++实现

    数据结构与算法学习笔记--图 C++实现 1 概念 2 图的表示方法 3 算法 3.1 拓扑排序 3.2 图的搜索算法 3.2.1 广度优先搜索(BFS) 3.2.2 深度优先搜索(DFS) 3.3 ...

最新文章

  1. C++中四种类型转换方式
  2. alternatives命令使用方法
  3. 学习Javascript的书籍(转)
  4. 採集和输出 DeckLink Studio 4K
  5. stm32 vscode 编译_STM32开发之 VSCode+gcc环境编译
  6. javascript的数组形式与php的数组形式
  7. IntelliJ Idea14 创建Maven多模块项目,多继承,热部署配置总结(一)
  8. 拓端tecdat|R语言基于Garch波动率预测的区制转移交易策略
  9. Oracle数据库学习笔记
  10. 数字图像处理 冈萨雷斯(第四版)图像配准
  11. Word 转 PDF 后目录链接无效的解决办法
  12. 如何下载太原市卫星地图高清版大图
  13. IC验证笔试题(平头哥)
  14. css英文字体 在线引用,css字体英文名称(示例代码)
  15. Linux 功能强大的 路由器,一款功能强大的路由器系统-软路由-RouterOS
  16. 【参赛作品12】基于华为云鲲鹏弹性云服务器部署openGauss数据库-实验
  17. 【Web技术】919- 前端关于单点登录的知识
  18. 多媒体制作技术心得体会_交互式多媒体课件制作的一点心得体会
  19. java 对List按照某个字段分组
  20. 【OpenGL】十八、OpenGL 绘制多边形 ( 绘制 GL_POLYGON 模式多边形 )

热门文章

  1. 趣味计算机冷知识,20个趣味冷知识:第10个也太好玩了!
  2. starnet php,webstar php留言板 v6.0 正式版
  3. SpringBoot 错误 : Failed to configure a DataSource: 'url' attribute is not specified and no embedd
  4. 【论文写作】毕业论文写作中致谢词的常见写法及优秀范文
  5. 【欧式距离:二维和三维定位算法】
  6. 01.浏览器的工作原理
  7. ffmpeg把图片生成视频
  8. 王者ios系统怎么查自己在哪个服务器,安卓王者荣耀怎么查看iOS系统的 | 手游网游页游攻略大全...
  9. youdian cms 数据库以及结构
  10. 仿今日头条“关注”按钮的实现