数据结构与算法的学习日常
文章平均质量分 59
许我杂俎
这个作者很懒,什么都没留下…
展开
-
用双向链表实现栈和队列
前几天发了一篇关于模板类双向链表的文章,介绍了一些链表的基本情况,同时用c++的模板类实现了双向链表的基本结构和基础功能。今天想要写一些使用双线链表实现栈和队列的内容。因为栈和队列的性质只需要在头或者尾处增减元素,所以相对于顺序表来说,链表更适合,能够轻松的实现动态的栈和队列。原创 2024-01-30 20:29:45 · 497 阅读 · 1 评论 -
选择排序原理讲解及代码演示
前几天我上传了比较常用的集中排序的代码,相关的讲解打算以后一点点补全。今天先把选择排序的讲解内容发布出来,希望能对正在学习的人有所帮助。原创 2024-01-18 16:27:27 · 322 阅读 · 1 评论 -
LeetCode 2.两数相加
这段代码是用于解决“两数相加”的问题,其中两个数是以链表的形式给出的,每个节点包含一个数字(0-9)和一个指向下一个节点的指针。链表的数字是反向存储的,例如数字。这段代码的主要逻辑是遍历两个输入链表,同时处理进位,并将结果存储在新的链表中。当两个输入链表都遍历完后,如果仍有进位,则将其添加到结果链表的末尾。是否为空,如果不为空,则获取它们当前节点的值,并将指针移动到下一个节点。如果有进位,则创建一个新的节点并设置其值为1,然后将。的目的是将这两个链表表示的数字相加,并返回一个新的链表表示相加后的结果。原创 2024-02-16 19:15:59 · 395 阅读 · 1 评论 -
c++模板类——双向链表的代码实现和讲解
链表作为一种线性的数据结构,时计算机领域中非常重要的一部分,很多高级复杂的数据结构都是建立在链表的结构基础之上的,可以说掌握了链表就能给自己的数据结构学习过程奠定一个非常坚实的基础。链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。链表有很多种不同的类型:单向链表,双向链表以及循环链表。原创 2024-01-26 21:25:30 · 1756 阅读 · 0 评论 -
分治算法的时间复杂度分析
分析算法的时间复杂度是必要的,因为这可以帮助我们了解算法的效率,从而在设计和实现算法时做出更好的决策。原创 2024-02-05 14:55:14 · 1700 阅读 · 1 评论 -
插入排序的代码实现
在插入排序过程中,已排序部分始终保持有序,而未排序部分的元素逐个被插入到已排序部分中。这种算法的时间复杂度为O(n^2),其中n为数组的长度。虽然插入排序在处理大量数据时效率较低,但对于小规模数据或部分已排序的数据,它的性能可能相对较好。插入排序算法的工作原理是逐步构建有序序列。原创 2024-02-16 19:11:52 · 358 阅读 · 1 评论 -
常见的几种排序算法的代码演示
在学习了一段时间的编程后,我们就会开始接触排序算法,排序算法可以处理将一组无序的数据变为有序数据的问题,也是很多进阶算法的基础。排序算法种类繁多,但是对于刚刚开始学习变成不久的新人来说,能接触到的排序算法只有三种,冒泡排序、选择排序、插入排序。在次之后,就有一些进阶技巧了,例如希尔排序、堆排序、归并排序和大名鼎鼎的快速排序。今天就把这几种排序算法的代码演示展示给大家。原创 2024-01-12 22:36:38 · 370 阅读 · 0 评论 -
原地删除数组中等于val的元素并返回数组的新长度
给你一个数组nums和一个值val,需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,必须仅使用O(1)额外空间并原地修改输入数组,元素的顺序可以改变。不需要考虑数组中超出新长度后面的元素。要求时间复杂度为O(1)。原创 2023-09-17 21:14:29 · 105 阅读 · 3 评论