递归
递归概念:递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。虽然大部分情况用不到递归,或者说可以用循环替代,且递归容易写出死逻辑,但我们还是需要去了解这个机制,因为某些场景用它确实很方面。先来看一段代码:package com.xn20...
递归概念:递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。虽然大部分情况用不到递归,或者说可以用循环替代,且递归容易写出死逻辑,但我们还是需要去了解这个机制,因为某些场景用它确实很方面。先来看一段代码:package com.xn20...
本篇栈数据结构稍长,但都是干货,也不难,稍微用心体会就可以理解。代码已经完整优化和测试,尽量考虑到了可预见的错误。栈的一个实际需求计算式: [722-5+1-5+3-3]请问: 计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们能直接看出这个算式,但是计算机怎么理解这个算...
推荐阅读3. 单向环形链表应用场景Josephu(约瑟夫、约瑟夫环) 问题 Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,...
推荐阅读2. 双向链表应用实例2.1 双向链表的操作分析和实现使用带 head 头的双向链表实现 –水浒英雄排行榜 单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。由于之前已经做过单链表的基础操作,理论上来上手双向链表的比较简单的,可以直接看代码就理解,这里不多废话。 双向...
链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下链表是以节点的方式来存储,是链式存储。每个节点包含 data 域, next 域:指向下一个节点。如图:发现链表的各个节点不一定是连续存储。链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定。单链表(带头结点...
因文章不宜篇幅过长,影响阅读体验和目录生成。将稀疏数组和队列拆分成两篇博客。2. 队列案例场景银行排队的案例2.1 队列介绍队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 。示意图:(使用数组模拟队列示意图)2.2 数组模拟...
因文章不宜篇幅过长,影响阅读体验和目录生成。将稀疏数组和队列拆分成两篇博客。1. 稀疏数组先看一个实际的需求五子棋程序中,有存盘退出和续上盘的功能。分析问题: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组。1.1 稀疏数组介绍当一个数组中大部分元素为0,...
数据结构和算法的关系1) 数据 data 结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。 2) 要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决. 3) 程序 = 数据结构 + 算法 ...