
数据结构与算法
遮不住的殇
勤能补拙
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第03篇 链表-1.单向链表
一、链表介绍链表是一种有序的数据结构,具有如下特点:链表是由节点组成的,每个节点具有数据域和指针域组成,数据域存放数据,指针域指向其他某个节点。链表是以节点的形式进行存储的,是链式存储的,单向链表逻辑结构如下:链表在内存中的位置不一定是连续的,结构如下:根据我们的需要,可以保证元素插入的顺序或者其他的顺序链表是可以动态的扩展容量的利用链表,我们可以实现很多其他的数据结构,比如:...原创 2019-07-30 22:38:28 · 210 阅读 · 0 评论 -
第01篇 稀疏数组
一、介绍当一个数组(通常指二维数组)的大部分数据数据内容相同,少数数据不同的时候,那么我们可以用稀疏数组对原始数组进行压缩,从而达到节省空间的目的。二、特点稀疏数组有以下特点:行数不固定,列数固定为3;第一行的元素分别为:第一列是原始数组的行数、第二列是原始数组的列数、第三列是原始数组中除了默认值(就是大多数值,这个不保存)之外其他值的个数其他行每行记录原始数组中某个数据的行下标、列...原创 2019-07-25 18:13:14 · 109 阅读 · 0 评论 -
第02篇 队列
一、介绍队列是一种先进先出的有序数据结构,可以用数组或者链表来实现。二、数组模拟实现队列使用数组来模拟队列也就是说把数据存放在数组中,如下图所示:...原创 2019-07-29 23:12:52 · 125 阅读 · 0 评论 -
第03篇 链表应用-01 约瑟夫环
一、问题描述N个人围成一圈,从第K个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,K=1,M=5, 被杀掉的顺序是:5,4,6,2,3,1。也就是说,最终1会活下来,编程求出出圈的顺序。二、涉及知识点单向循环链表LinkedList数组自定义单向循环链表我们可以通过上述两种知识中的某一个来解题。三、思路分析单向循环链表LinkedList:(solv...原创 2019-08-03 17:13:15 · 181 阅读 · 0 评论 -
第03篇 链表-2.双向链表
双向链表(一)简单介绍双向链表是在单向链表的基础上给每个节点多出了一个指针,单向链表只能指向上一个节点,而双向链表还可以指向上一个节点,这样操作起来就更加灵活(二)思路分析定义如下数据结构来表示节点 @Data private class DoubleNode { private T data; private DoubleNode next; priv...原创 2019-07-31 22:28:36 · 266 阅读 · 0 评论 -
第03篇 链表-3.单向循环链表
一、简单介绍单向循环链表会把所有的节点形成一个环境,也就是说,最后一个节点的下一个节点就是头结点。效果图如下:二、思路分析定义如下数据结构表示链表中的每一个节点: private class CyclicNode { private T data; private CyclicNode next; }各个字段含义如下:data:当前节点的数据next:指向...原创 2019-08-01 22:16:02 · 335 阅读 · 0 评论 -
第04篇栈
一、简单介绍原创 2019-08-05 18:27:57 · 114 阅读 · 0 评论 -
第04篇 栈应用-01 表达式计算器
一、问题描述输入一个表达式,如:(3.2+2.7)*2-(2.3+1.1)*2,计算出这个表达式的结果。这个表达式被称为中缀表达式二、涉及知识点栈:https://blog.youkuaiyun.com/mail_liuxing/article/details/98505390表达式。三、表达式分类我们的计算表示分为三种:前缀表达式(也叫波兰表达式)、中缀表达式、后缀表达式(也叫逆波兰表达式...原创 2019-08-06 16:34:26 · 340 阅读 · 0 评论 -
第05篇 递归
一、什么是递归简单的说,程序调用自身的编程技巧称为递归( recursion)递归会遵守如下准则:每执行一次方法,就会创建一个新的受保护的独立空间(栈空间)方法的局部变量是独立的,不会相互影响如果方法的参数是引用类型的,如数组,那么会共享这个变量递归必须有退出条件,而且需要向退出递归的条件逼近,否则就会无限递归,出现StackOverflowError当一次方法执行完毕或者是ret...原创 2019-08-21 14:29:33 · 217 阅读 · 0 评论