数据结构与算法
遮不住的殇
勤能补拙
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第03篇 链表-1.单向链表
一、链表介绍 链表是一种有序的数据结构,具有如下特点: 链表是由节点组成的,每个节点具有数据域和指针域组成,数据域存放数据,指针域指向其他某个节点。 链表是以节点的形式进行存储的,是链式存储的,单向链表逻辑结构如下: 链表在内存中的位置不一定是连续的,结构如下: 根据我们的需要,可以保证元素插入的顺序或者其他的顺序 链表是可以动态的扩展容量的 利用链表,我们可以实现很多其他的数据结构,比如:...原创 2019-07-30 22:38:28 · 224 阅读 · 0 评论 -
第01篇 稀疏数组
一、介绍 当一个数组(通常指二维数组)的大部分数据数据内容相同,少数数据不同的时候,那么我们可以用稀疏数组对原始数组进行压缩,从而达到节省空间的目的。 二、特点 稀疏数组有以下特点: 行数不固定,列数固定为3; 第一行的元素分别为:第一列是原始数组的行数、第二列是原始数组的列数、第三列是原始数组中除了默认值(就是大多数值,这个不保存)之外其他值的个数 其他行每行记录原始数组中某个数据的行下标、列...原创 2019-07-25 18:13:14 · 122 阅读 · 0 评论 -
第02篇 队列
一、介绍 队列是一种先进先出的有序数据结构,可以用数组或者链表来实现。 二、数组模拟实现队列 使用数组来模拟队列也就是说把数据存放在数组中,如下图所示: ...原创 2019-07-29 23:12:52 · 134 阅读 · 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 · 192 阅读 · 0 评论 -
第03篇 链表-2.双向链表
双向链表 (一)简单介绍 双向链表是在单向链表的基础上给每个节点多出了一个指针,单向链表只能指向上一个节点,而双向链表还可以指向上一个节点,这样操作起来就更加灵活 (二)思路分析 定义如下数据结构来表示节点 @Data private class DoubleNode { private T data; private DoubleNode next; priv...原创 2019-07-31 22:28:36 · 280 阅读 · 0 评论 -
第03篇 链表-3.单向循环链表
一、简单介绍 单向循环链表会把所有的节点形成一个环境,也就是说,最后一个节点的下一个节点就是头结点。 效果图如下: 二、思路分析 定义如下数据结构表示链表中的每一个节点: private class CyclicNode { private T data; private CyclicNode next; } 各个字段含义如下: data:当前节点的数据 next:指向...原创 2019-08-01 22:16:02 · 356 阅读 · 0 评论 -
第04篇栈
一、简单介绍原创 2019-08-05 18:27:57 · 125 阅读 · 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 · 362 阅读 · 0 评论 -
第05篇 递归
一、什么是递归 简单的说,程序调用自身的编程技巧称为递归( recursion) 递归会遵守如下准则: 每执行一次方法,就会创建一个新的受保护的独立空间(栈空间) 方法的局部变量是独立的,不会相互影响 如果方法的参数是引用类型的,如数组,那么会共享这个变量 递归必须有退出条件,而且需要向退出递归的条件逼近,否则就会无限递归,出现StackOverflowError 当一次方法执行完毕或者是ret...原创 2019-08-21 14:29:33 · 228 阅读 · 0 评论
分享