![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
羽化登仙°
这个作者很懒,什么都没留下…
展开
-
栈的实现之用链表实现
用链表实现栈上次我们用数组实现了栈,数组结构实现栈比较容易,那么用链表该如何实现栈呢?原创 2020-07-07 18:32:12 · 512 阅读 · 0 评论 -
学习栈的心得和总结(数组实现)
堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。常与另一种有序的线性数据集合队列相提并论。堆栈常用一维数组或链表来实现。栈(数组实现)操作堆栈使用两种基本操作:推入(压栈,push)和弹出(弹栈,pop):推入:将数据放入堆栈顶端,堆栈顶端移到新放入的数据。弹出.原创 2020-06-25 15:27:29 · 2717 阅读 · 0 评论 -
约瑟夫问题的学习心得
约瑟夫问题约瑟夫问题的引入及历史背景约瑟夫问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环这个问题是以弗拉维奥·约瑟夫命名的,他是1世纪的一名犹太历史学家。他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意,他不知道是哪一个。人们原创 2020-06-22 23:11:38 · 3118 阅读 · 0 评论 -
学习双向链表的心得与总结
前段时间刚刚学习了单向链表[我写的关于学习单向链表的心得](https://blog.csdn.net/weixin_44290628/article/details/106422973),单向链表其实比较简单,也是很常用的一种数据结构,单向链表相较于数组来说的话它的增加和删除都比较方便,但是单向链表在删除节点的时候吧总是得先获取要删除的节点的前一个节点,所以我们这里学习双向链表,使得在对链表进行增删改查时更加方便。原创 2020-06-11 23:02:08 · 1873 阅读 · 0 评论 -
关于链表的几道大厂面试题
这篇博客接着我的上一篇博客https://blog.csdn.net/weixin_44290628/article/details/106422973是针对链表的几个大厂的面试题,希望对大家有用。获取链表中的有效节点个数:这是十分简单的一道面试题,只需要将链表除了头节点遍历即可,实现如下//获取整个链表的有效节点个数 public static int length(HeroNode headNode) { //说明这是一个空链表 if (headNode.next == null).原创 2020-06-03 15:42:17 · 161 阅读 · 0 评论 -
数据结构之单链表(java实现,一看就懂的单链表你还不学吗?)
单链表写在前面:说起单链表大家可能都比较熟悉,有些人可能会说java或者其他的语言都将这些数据结构封装好了,你直接调用不就好啦,干嘛还要费劲的学这些东西,我想告诉大家的是,就算是现在的高级语言都将这些数据结构封装好了,我们还是要学习的,因为如果你不了解这些数据结构的基本含义的话,是无法熟练的应用那些已经封装好了的东西,所以我们如果不想仅仅变成一个只会搬砖的码农那就好好学习这些底层的东西,认真了解其中的原理。链表在大家的想象中可能是像链子一样将数据串联到一起的,但其实在实际的内存中却不是这样的,它原创 2020-05-29 15:50:31 · 243 阅读 · 2 评论 -
学习稀疏数组的心得与体会(java实现)
最近新学习了稀疏数组,对稀疏数组有了一个较为深刻的理解,稀疏数组可以将数据压缩存储,节省空间,之后需要时将数组解压即可。那么下面我们就来实现一下稀疏数组吧。稀疏数组我们先来说一下稀疏数组的概念:记录原始二维数组的行列数,并记录原始二维数组中的值的个数并创建n行3列的数组,第一行记录原始二维数组的行列数和值的个数,其余各行记录值所在的行和列还有值的大小下面我们用代码来进行实现首先我们可以这样来想,我们可以把一个二维数组想象成一个n行n列的棋盘,那么我们用1来代表黑子,2来代表蓝子创建一个棋盘出来,原创 2020-05-27 21:33:43 · 179 阅读 · 0 评论 -
如何用数组实现环形队列
上次实现了一个普通队列,但是普通队列存在的问题就是队列是一次性的,并不能够重复利用,所以这次来写环形队列,实现队列的复用。环形队列环形队列要比普通的队列复杂一些,要对原来的普通队列做一些调整。首先头指针front要做一些变化,原本的front = -1,此时要让front指向队列的第一个元素也就是arr[front]就是队列的第一个元素,front的初始值变为了0。尾指针rear也要进行一些改变,要让rear指向最后一个元素的后一个位置,因为希望空出一个空间作为约定,rear的初始值也为0。原创 2020-05-25 21:38:19 · 281 阅读 · 0 评论 -
学习队列的心得(数组实现)
最新学习了队列的实现和循环队列的实现,在这里做做笔记,也当是复习。普通队列队列最经典的应用就是银行的排队叫号系统,队列采用先进先出原则,先进去的先出来,下面我们用一幅图来形象的说明队列的原理。那么由图可以看出初始时定义两个指针,头指针front和尾指针rear,它们俩都指向的-1,MaxSize是数组的最大长度,因为数组的下标从0开始,所以数组的最大下标为MaxSize-1。那么添加数据时可以看出尾指针将向后移动,而头指针则保持不动,当要让数据出队列时,则只要让头指针向后移即可,那么按照这种思路我们来原创 2020-05-25 12:56:18 · 396 阅读 · 0 评论