![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法(Java)
一点点星辰
这个作者很懒,什么都没留下…
展开
-
1. 线性结构与非线性结构
1. 线性结构和非线性结构1.1 线性结构1)线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。2)线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。3)顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的。4)链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点存放数据元素以及相邻元素的地址信息。4)线性结构:数组、队列、链表和栈。1.2 非线性结构1)非线性结构:二维数组、多维数组、广义表、树结构和图结构。...原创 2022-01-04 21:22:08 · 423 阅读 · 0 评论 -
2. 稀疏数组
1. 基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。1)把具有不同值的元素的行和列记录在一个小规模的数组(稀疏数组)中,从而缩小程序的规模,其中(稀疏数组)第一行表示的是二维数组有多少行、多少列和有效数据有多少个。2. 实际需求编写的五子棋中,有存盘退出和续上盘的功能1)请使用二维数组记录棋盘分析问题:因为该二维数组的很多默认值都是0,因此记录了很多没有意义的数据,用稀疏数组解决。需求分析1)使用稀疏数组,来保留类似前面的二维数组原创 2022-01-05 00:16:06 · 270 阅读 · 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 · 243 阅读 · 0 评论 -
4.环形队列
1. 介绍1)front含义:arr[front]就是队列的一个元素,初始值为0。2)rear含义:rear指向队列的最后一个元素的最后一个位置,空出一个空间作为约定,初始值为0。3)表示队列为空:rear == front4)表示队列为满:(rear + 1) % maxSize == front5)表示队列有效数据的个数:(rear + maxSize - front) % maxSize6)代码实现import java.util.Scanner;public class Ci原创 2022-01-10 23:57:29 · 472 阅读 · 0 评论 -
5. 单链表
文章目录1.单链表的介绍及内存布局2.单链表的创建、添加与遍历直接将新数据添加到链表的尾部。按顺序将新数据插入单链表中3.单链表的节点修改4.单链表的节点删除1.单链表的介绍及内存布局1)链表是有序的列表,以节点的方式来存储。2)每个节点包含data域,next域(指向下一节点)。3)链表的各个节点不一定是连续存储的。4)链表分带头节点的链表和没有头节点的链表。5)内存中的存储如下图:6)单链表(带头节点)逻辑结构示意图如下:2.单链表的创建、添加与遍历应用举例:使用带head头节点原创 2022-01-13 21:48:12 · 132 阅读 · 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 · 385 阅读 · 0 评论