java数据结构与算法
文章平均质量分 75
很懒的十六
一个马上秃头的代码编写者。
展开
-
数据结构之双向链表
前面已经介绍过了单链表,这篇文章介绍一下双向链表。双向链表的节点比单链表的节点多一个pre域,也就是存放当前节点的前一个节点地址的地方。单链表里有许多操作是要找到待操作节点的前一个节点的,而双向链表则不需要,因为双向链表可以得到当前节点的前一个和后一个节点信息,可以完成相应的操作。双向链表节点:节点类:class Node{ //pre表示前一个节点,next表示后一个节点 //no表示序号,其他为一些数据 private Node pre; private Node next; pri原创 2021-01-29 18:07:47 · 430 阅读 · 0 评论 -
数据结构之单链表的其他基本操作
前面两篇文章介绍了一下单链表的增删改查,这篇文章来介绍一下单链表的一些其他基本操作。1)统计单链表长度2)获取单链表倒数第k个节点3)单链表反转4)单链表反向输出5)两个有序单链表合并为一个单链表且仍然有序根据前面两篇文章,应该都对单链表有一个简单的的认识,即想要操作单链表就需要一个节点指针,来指向单链表的每一个节点,要完成上面五个操作仍然需要一个节点指针,甚至还需要一个辅助指针。以下方法都不在单链表类内部,所以需要接收参数统计单链表长度思路: 即计算单链表的节点个数,很明显需要遍历单链原创 2021-01-27 21:33:01 · 633 阅读 · 0 评论 -
数据结构之单链表的删除,修改,遍历
上一篇文章已经介绍了单链表的插入(三种插入方法)https://blog.csdn.net/six_teen/article/details/113066700这篇文章介绍一下单链表的基础操作之删除,修改,遍历。首先是单链表的遍历:遍历思路:1)先判断链表是否为空,如果为空直接输出链表为空然后退出遍历方法,链表为空的条件是:head.getNext()==null,即头节点的下一个节点为空2)单链表的所有操作都需要一个指针用来指向链表的节点,所以先创建一个节点指针并指向第一个节点:HeroNod原创 2021-01-25 21:32:40 · 1163 阅读 · 1 评论 -
数据结构之单链表的插入
什么是链表?如上图,链表和生活中的链条很相似,链表在逻辑结构上是以链条的形式连接而成的,但物理结构上链表的节点不是连续性存储的。如图,每一个节点都分为两块区域,data区和next区,data区存储数据,next区存储下一个节点的地址。因为节点的这种特性,所以链表可以充分利用内存中零散的空间。链表一般分为带头节点的链表和不带头节点的链表(头结点用head表示)后续演示都使用带头节点的链表(一般头结点data区为空,next区指向第一个节点):先定义一个节点类:no表示节点序号,name,.原创 2021-01-24 10:48:23 · 10594 阅读 · 1 评论 -
数据结构之队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列可以由数组实现,也可以由链表实现,下面代码以数组实现队列。数组实现队列思路:1)需要两个变量(或者说是指针),指向队列的头部和尾部,队列初始化时都指向为-1,front为头部,rear为尾部。2)定义一个数组array和一个maxSize变量,创建数组时用maxSize,这也是用数组实原创 2021-01-22 21:01:31 · 97 阅读 · 0 评论 -
数据结构之稀疏数组
1.什么是稀疏数组?百度百科的定义如下:https://baike.baidu.com/item/%E7%A8%80%E7%96%8F%E7%9F%A9%E9%98%B5/3249303?fr=aladdin稀疏数组也是二维数组,是一种较为特殊的二维数组。存储的元素是在一个非常大的二维数组中找出有效元素进行存储,但存储的元素一般较少且没有规律,所以称为稀疏数组。2.为什么会有稀疏数组(及其应用)?设想一个场景,在一款APP上与电脑进行五子棋博弈,而又突然有事但棋局又不想毁掉,这个时候可以选择.原创 2021-01-21 10:06:39 · 289 阅读 · 2 评论