![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
icedefender
热爱编程,渴望创造
展开
-
数据结构_07栈与队列
栈,stackFILO只能在一端进行插入和删除线性表括号匹配问题给定一个字符串,里面可能包含“()”小括号和其他字符,编写程序检查该字符串中的小括号是否成对出现逆波兰表达式1. 中缀表达式:1+(2-3),2-232. 后缀表达式:ab+后缀表达式总是放在和他相关的操作数之后,如a+(b-c) → abc-+a+(b-c)d → abc-d+a(b-c)+d → abc-*d+队列,queue符号表...原创 2020-11-05 10:42:59 · 104 阅读 · 0 评论 -
数据结构_03队列与循环队列
队列队列queue,是一个有序列表,可以用数组和链表实现先进先出,如银行业务办理用数组模拟队列队尾:rear——rear会随着数据的输入而不断增加队首:front——front会随着数据的输出而不断增加队列的长度:rear - front + 1最大容量:maxsize注:这张图有问题,而且,front,rear不一定是从-1开始数据添加1. 添加之前需判断队列的容量——如何判断——rear表示的是队尾元素的序号,因为容量为 rear+1,只需判断 rear+1与 ma原创 2020-11-05 10:41:34 · 137 阅读 · 0 评论 -
数据结构_06线性表
线性表前驱元素与后继元素头节点与尾节点除了头节点与尾节点,其他元素有且只有一个前驱和后继元素顺序表顺序表的容量可变1. 在插入元素时不管是直接插入(无参数,直接在尾部插入),还是定点插入(在指定位置处插入),都需要先判断容量是否已满,若是,则调用另外的扩容函数(其实就是新建一个2倍容量的顺序表,指向原来的表,并将数值复制到新表中)时间复杂度各个方法的复杂度顺序表底层是由数组实现,而数组的长度是固定的,在操作中涉及到扩容时,会导致操作某些需要扩容的元素时,时间复杂度会剧增,这样就会导致原创 2020-11-05 09:34:23 · 150 阅读 · 0 评论 -
数据结构_04空间复杂度
如果说时间复杂度是对算法运行次数的表征,那么空间复杂度则是算法运行时所占内存大小的度量java中常见内存占用基本数据类型内存占用字节数byte1short2char2int4long8float4double8boolean1计算机访问内存的方式都是一次一个字节,一个字节又是8位一个引用需要8个字节表示,java中的引用就是变量,例如Date a=new Date();a这个变量就需要8个字节来表示.原创 2020-11-04 09:34:52 · 181 阅读 · 0 评论 -
数据结构_05简单排序
简单排序comparable接口介绍某个类实现comparable接口后,我们就可以直接对这个类进行比较了冒泡排序1. 注意所说的第一次冒泡,指的是第一轮结束后的结果,也就是最大值被放在最后,而不是第一轮中交换一次后的结果选择排序插入排序高级排序希尔排序——选定一个增长量,h ,按照增长量对数据进行分组,对分好组的每一组数据使用插入排序,h=h/2,多次循环归并排序1. 递归2. 时间复杂度为(n*log2(n))——log2(n)是分治,合并的次数3. 辅原创 2020-11-04 15:14:43 · 128 阅读 · 0 评论 -
数据结构_02稀疏数组
稀疏数组引入:在棋盘游戏中经常会遇到,保留此局或者复盘,此时我们一般会使用一个二维数组将棋盘的信息存储起来,但是针对那些二维数组中含很多0(无意义)的情况就需要使用,稀疏数组压缩当一个数组大部分元素为0,或同一个值时,就可使用稀疏数组问题:这种真的有用吗,以上图为例,77=49 降到 38=24,但如果有效值再多一倍那它的压缩就完全不存在了,这时有效值也只占16/49,大概1/3,这里就涉及到有效值占的比例了二维数组转sparseArray思路:1. 遍历二维数组,找到有效数据的个数sum2原创 2020-11-03 16:33:47 · 55 阅读 · 0 评论 -
数据结构_01线性与非线性结构
线性结构:数据元素之间一对一,例如,a[0]=30,唯一对应两种存储方式,顺序存储与链式存储顺序存储——顺序表,存储元素的地址是连续的,数组链式存储——链表,存储元素的地址不一定连续,一个元素又称为一个节点这样的好处是可以充分利用碎片内存常见的线性结构**:数组,队列,链表,栈**非线性结构包括:二维数组,多维数组,广义表,树结构,图结构...原创 2020-11-03 14:47:02 · 265 阅读 · 0 评论