![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 78
风一样的美代码
这个作者很懒,什么都没留下…
展开
-
设计一个具有获取最小值(getMin)方法的栈
一、题目描述实现一个特殊的栈结构,该栈在具有一般栈的结构的基础上还具有获取栈最小元素的功能。二、题目要求1.栈的pop、push、getMin操作的时间复杂度均为O(1);2.设计特殊栈的时候可以使用现成的栈作为工具去完成。三、题目解析题目要求提醒我们可以使用现成的栈的数据结构,其实也就是告诉我们要使用其作为工具去构建我们的特殊的栈,因为其getMin操作是O(1),因此告诉我们其操作肯定不是在自己的栈里瞎折腾,因此我们需要两个栈,一个用来存储基本数据,另一个用来存储getMin操作原创 2020-05-17 15:27:44 · 1118 阅读 · 0 评论 -
图的代码实现(Java)
一、图的分类有向图和无向图二、图的表示方法邻接表法和邻接矩阵法还有边集数组法①邻接表法:就是对于每个节点记录到另外一个节点的信息以及权重②邻接矩阵法;就是用一个矩阵来记录各个节点之间的连接情况以及权重,用无穷来表示不可达③边集数组:边集数组是由两个一维数组构成的。一个是存储顶点的信息,另一个是存储边的信息,这个边数组是由每个数据元素的起始点坐标、终点坐标以及权重组成的。边集数组有一个特点,就是要查...原创 2018-06-19 18:47:03 · 2593 阅读 · 0 评论 -
树、森林、二叉树的相互转化
一、树、森林、二叉树的定义①树:树是n个节点的有限集。当n=0时称为空树,在任意一个非空树中满足以下两个条件:<1>有且仅有一个特定的节点为根节点<2>其余节点可分为m个互不相交的有限集,这个有限集本身又是一棵树,并成为这棵树的子树。②二叉树:二叉树的定义和树的定义类似,二叉树是一由n个节点构成的有限集合,该集合为空集的时候称为空二叉树,当n不等于0时,它是由一个根节点(n...原创 2018-06-14 09:22:16 · 641 阅读 · 0 评论 -
单链表、静态链表、循环链表、双向链表
一、单链表单链表的插入与删除:假设我们有个节点ai,指向他的指针为p,有个节点为e,指向他的指针为s①插入:想要把e插入到ai的后面,只需要把s的next指向p的next,再把p的next指向e就可以了②删除:想要删除ai+1节点,只需要把p的next指针指向p的next的next就可以了二、静态链表就是用数组来描述的链表就叫做静态链表。用游标来代替指针,通常第一个和最后一个元素是不存放数据的,数...原创 2018-06-13 22:02:37 · 1159 阅读 · 0 评论 -
解决哈希冲突的三种方法(拉链法、开放地址法、再哈希法)
上篇博客我们说到了,什么是哈希冲突,其实就是再采用哈希函数对输入域进行映射到哈希表的时候,因为哈希表的位桶的数目远小于输入域的关键字的个数,所以,对于输入域的关键字来说,很可能会产生这样一种情况,也就是,一个关键字会映射到同一个位桶中的情况,这种情况就就叫做哈希冲突,解决哈希冲突的有三种方案,一种叫做拉链法(也叫作链接法、链地址法,一个意思),另外三种分别为开发地址法和再散列法。一、拉链法...原创 2018-06-12 10:16:57 · 63305 阅读 · 18 评论 -
哈希函数和哈希表(散列表)
哈希表的简单介绍:哈希表是一种实现字典操作的一种有效的数据结构,它是普通数组概念的推广,由于对普通数组可以直接寻址,使得其的查找的时间复杂度是始终为O(1)的。一、哈希函数:若一个函数为哈希函数其必然具有以下四个性质:①输入域无穷但对用的输出域是相对有限的②若输入确定,输出一定确定③输出相同,但输入并不一定相同,也就是输出不同,输入可能相同:哈希碰撞④其具有离散性。也就是每个输出数...原创 2018-06-12 09:17:41 · 1057 阅读 · 0 评论 -
并查集
一、什么是并查集并查集:其实也就是满足两种结构的一种数据结构这两个结构分别为:①isSameSet结构,这个结构是用来查找两个元素是否属于一个集合②还有一个是union结构,完成的就是把两个集合合并成一个大集合 可以用Set和List来实现,但是需要对集合进行遍历,代价较高二、并查集的逻辑实现并查集的逻辑实现:对于每一个集合的每一个元素都有一个node,这个node含有自己的value和指向上级的...原创 2018-06-04 20:01:11 · 7302 阅读 · 0 评论 -
二叉树的先序、中序、后序遍历
二叉树的遍历是数据结构与算法非常重要也是非常基础的内容,首先讲什么是二叉树的先序、中序以及后序遍历: 先序、中序、后序遍历其实都是对于根节点来说的。 先序遍历:其实...原创 2018-05-25 19:49:45 · 840 阅读 · 0 评论 -
利用队列来实现栈和利用栈来实现队列
一、如何只使用队列来实现栈结构因为队列的结构是先进后出,而栈的数据结构特点是先进先出,所以我们可以搞两个队列,当一个队列进入另外一个队列的时候,只剩下一个元素,留着返回,然后这个队列再进入原来哪个队列只剩下一个元素等着返回,循环使用这个逻辑,即可完成。 /* * 两个队列实现栈结构 */ public static class TwoQueuesStack { //data队列和he...原创 2018-04-02 18:55:36 · 353 阅读 · 0 评论 -
java中利用数组实现大小固定的栈和队列
我们都知道栈和队列这两种最基本的数据结构,他们的特点分别为---栈:先进后出 队列:先进先出。那么,在java中如何利用数组来实现这两种数据结构的呢?一、实现栈:就是用一个数组来实现栈这个数据结构/** * 因为所有的数据结构必然是要落地的,所以在Java中如何去吧栈和队列这两个数据结构表现出来呢 * 我们用的是数组来实现的 * @author zhmm * */ //用数组来实现栈这...原创 2018-04-02 18:47:51 · 1448 阅读 · 0 评论