Java数据结构和算法(一)线性结构之单链表 prev current next -------------- -------------- -------------- | value | next | -> | value | next | -> | value | next | -------------- -------------- -------------- 单链表的结构如上:最后一个节点的 next=null.下面看一下代码. (1) 链表的基本操作 public class…
前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决. 程序 = 数据结构 + 算法 数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位 我会用数据结构与算法[Java]这一系列的博客记录自己的学习过程,如有遗留和错误欢迎大家提出,我会第一时间改正!!! 注:数据结构与算法[Java]这一系列的博客参考…
Java数据结构和算法(一)线性结构 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 线性表 是一种逻辑结构,相同数据类型的 n 个数据元素的有限序列,除第一个元素外,每个元素有且仅有个直接前驱,除最后一个元素外,每个元素有且仅有一个直接后继. 一.基本概念 线性表具有以下特点: 元素个数有限 逻辑上元素有先后次序 数据襟型相同 仅讨论元素间的逻辑关系 (1) 数组和链表 选项 数组 链表 读取 O(1) O(n) 插入…
相关链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 稀疏数组 队列 稀疏数组 稀疏数组介绍 图示 应用实例 代码实现 SparseArray.java:与二维数组的转换,包括二维转稀疏,和稀疏转二维. 课后练习 队列 引入 先进先出,有序列表 可用数组或链表实现.数组(顺序存储),链表(链式存储). 图示:使用数组模拟队列 数组模拟队列 思路: 问题: 目前数组不能复用,一次性. 使用取模的环形队列来改进 代码实现: ArrayQueueDemo.ja…
今天,我们要讲的是数据结构与算法中的链表. 链表简介 链表是什么?链表是一种动态的数据结构,这意味着我们可以任意增删元素,它会按需扩容.为何要使用链表?下面列举一些链表的用途: 因为数组的存储有缺陷:增删元素时往往需要移动元素.而链表在内存中的放置并不是连续的,元素通过 next 属性指向下个元素,所以链表增删元素,不需要移动元素,只需要更改 next 的指向即可. 在生活中,最形象的链表莫过于火车了,车头是 head,每一节车厢都有一个 next 用于连接后面的车厢,想增删车厢,只需要更改 n…
前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷.在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造成内存的浪费,过小又不能满足数据量的存储. 本篇博客我们将讲解一种新型的数据结构——链表.我们知道数组是一种通用的数据结构,能用来实现栈.队列等很多数据结构.而链表也是一种使用广泛的通用数据结构,它也可以用来作为实现栈.队列等数据结构的基础,基本上除非需要频繁的通过下标来随机访问各个数据,否则很多使…
第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么用数组 需求:保存所在城市每个月的平均温度,可以这么实现 var averageTemp1 = 43.3; var averageTemp2 = 53.2; var averageTemp3 = 14.2; var averageTemp4 = 42.8; var averageTemp5 = 14…
常见的缓存淘汰策略: 先进先出 FIFO 最少使用LFU(Least Frequently Used) 最近最少使用 LRU(Least Recently Used) 链表定义: 链表也是线性表的一种, 数组需要一块连续的内存空间来存储,对内存要求比较高, 链表恰恰相反,它并不需要一块连续的内存空间,它通过"指针"将一组零散的内存块 串联起来使用. 最常见的链表结构: 单链表 双向链表 循环链表 用空间换时间: 当内存空间充足的时候,如果更加追求代码的执行速度,可以选择空间复杂度相对较…
有两种结构类似于数组,但在添加和删除元素时更加可控,它们就是栈和队列. 第三章 栈 栈数据结构 栈是一种遵循后进先出(LIFO)原则的有序集合.新添加的或待删除的元素都保存在栈的同一端,称为栈顶,另一端就叫做栈底.在栈里, 新元素都靠近栈顶,旧元素都接近栈底. 栈也被用在编程语言的编译器和内存中保存变量.方法调用等. 创建栈 先声明这个类 function Stack(){ // 各种属性和方法的声明 } 选择数组这种数据结构来保存栈里的元素 let items = []; 为栈声明一些方法 p…
题目:输入一个链表的头结点,从尾到头反过来打印出每一个节点的值 考察 单链表操作.栈.递归等概念. 理解:要实现单链表的输出,那么就须要遍历.遍历的顺序是从头到尾.而节点输出的顺序是从尾到头.因此,先遍历到的节点后输出.这是一个典型的 "后进先出". 要实现这种输出,能够使用栈,或,递归. 通过这道题,让我对 "递归在本质上就是一个栈结构" 理解的更加深刻. 代码例如以下: /*********************************************…