
数据结构与算法(Java)
文章平均质量分 50
一点点星辰
这个作者很懒,什么都没留下…
展开
-
1. 线性结构与非线性结构
1. 线性结构和非线性结构 1.1 线性结构 1)线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。 2)线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。 3)顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的。 4)链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点存放数据元素以及相邻元素的地址信息。 4)线性结构:数组、队列、链表和栈。 1.2 非线性结构 1)非线性结构:二维数组、多维数组、广义表、树结构和图结构。 ...原创 2022-01-04 21:22:08 · 442 阅读 · 0 评论 -
2. 稀疏数组
1. 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 1)把具有不同值的元素的行和列记录在一个小规模的数组(稀疏数组)中,从而缩小程序的规模,其中(稀疏数组)第一行表示的是二维数组有多少行、多少列和有效数据有多少个。 2. 实际需求 编写的五子棋中,有存盘退出和续上盘的功能 1)请使用二维数组记录棋盘 分析问题: 因为该二维数组的很多默认值都是0,因此记录了很多没有意义的数据,用稀疏数组解决。 需求分析 1)使用稀疏数组,来保留类似前面的二维数组原创 2022-01-05 00:16:06 · 288 阅读 · 0 评论 -
3. 队列
1.队列介绍 1)队列是一个有序列表,可以用数组或链表来实现。 2)遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。 3)示意图:maxSize表示队列容量,front表示头指针,rear表示尾指针 2.数组模拟队列(出现的问题在数组模拟环形队列中可以解决) 添加数据(addQueue) 1)将rear(尾指针)后移:rear++,再将data赋值给数组arr[rear]。注意:front == rear表示队列为空。 2)若rear(尾指针)小于队列的最大的下标maxSize -原创 2022-01-10 20:32:46 · 266 阅读 · 0 评论 -
4.环形队列
1. 介绍 1)front含义:arr[front]就是队列的一个元素,初始值为0。 2)rear含义:rear指向队列的最后一个元素的最后一个位置,空出一个空间作为约定,初始值为0。 3)表示队列为空:rear == front 4)表示队列为满:(rear + 1) % maxSize == front 5)表示队列有效数据的个数:(rear + maxSize - front) % maxSize 6)代码实现 import java.util.Scanner; public class Ci原创 2022-01-10 23:57:29 · 523 阅读 · 0 评论 -
5. 单链表
文章目录1.单链表的介绍及内存布局2.单链表的创建、添加与遍历直接将新数据添加到链表的尾部。按顺序将新数据插入单链表中3.单链表的节点修改4.单链表的节点删除 1.单链表的介绍及内存布局 1)链表是有序的列表,以节点的方式来存储。 2)每个节点包含data域,next域(指向下一节点)。 3)链表的各个节点不一定是连续存储的。 4)链表分带头节点的链表和没有头节点的链表。 5)内存中的存储如下图: 6)单链表(带头节点)逻辑结构示意图如下: 2.单链表的创建、添加与遍历 应用举例: 使用带head头节点原创 2022-01-13 21:48:12 · 150 阅读 · 0 评论 -
6.单链表的相关面试题
文章目录1.计算单链表中有效节点个数2.查找单链表中倒数第k个节点3.单向链表的反转4.从尾到头打印单链表(要求1:反向遍历,要求2:Stack栈) 1.计算单链表中有效节点个数 1)思路: 定义一个变量,定义一个临时节点,遍历单链表,临时节点后移,变量就自增 public class linkedList { public static void main(String[] args) { //创建heroNode的对象 HeroNode h1 = new He原创 2022-01-20 21:16:45 · 405 阅读 · 0 评论