数据结构与算法
文章平均质量分 85
Chaser Feng
一直在路上!
展开
-
双向循环链表详解及其基本功能的实现
文章目录循环链表概念定义节点类型及初始化销毁链表链表头插链表尾插特定位置插入链表头删链表尾删特定位置删除查找节点获取节点个数判断链表是否为空打印链表 循环链表概念 在单链表详解中我们提到了链表的几种基本的结构,在这里要详细讲到的就是带头双向循环链表,其结构如下: 该链表拥有1个头节点,且每个节点都有一个前驱指针和一个后继指针,分别用来保存前一个节点的地址和后一个节点的地址,这样就能够实现链表的双向访问的功能,需要注意的是链表的最后一个节点的后继指针指向头节点,头节点的前驱指针指向最后一个节点,带头双向循环原创 2022-01-25 21:45:44 · 3520 阅读 · 26 评论 -
【Leetcode】单链表中快慢指针(双指针)的运用
文章目录Leetcode876.链表的中间结点链表中倒数第k个结点 Leetcode876.链表的中间结点 相信对于学习链表的初学者来说,首次看到这个题目时,首先想到的应该是通过对整个链表进行一遍遍历求出链表节点的个数,然后再通过循环来找到中间节点(实不相瞒我第一次也是这样想的)。但是通过两次循环,不免增加了代码量和时间复杂度。那么,接下来就介绍一下最优的解题思路。 最优思路 定义两个指针,其中一个指针为慢指针,另一个指针为快指针,对本题而言,慢指针每次走一步(向前移动一个节点),快指针每次走两步(向前移原创 2021-11-13 21:14:41 · 1289 阅读 · 29 评论 -
单链表基础知识详解——基本概念结构及函数实现(增删查改)
文章目录链表的概念及结构初始化链表打印单链表创建新节点计算链表节点数单链表头插单链表尾插特定位置插入特定位置之前插入特定位置后插入单链表头删单链表尾删特定位置删除删除特定位置的节点删除特定位置的后一节点单链表查找修改链表 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成,每个结点包括两个部分:一部分是存储数据元素的数据域,另一部分是存储其他结点地址的指针域原创 2021-10-19 16:45:21 · 1437 阅读 · 19 评论 -
一学就会的顺序表 —— 结构及各种接口 ( 头插 / 删、尾插 / 删、特定位置查找 / 插入 / 删除 ) 的实现
文章目录顺序表概念及结构初始化顺序表检查容量销毁顺序表打印顺序表增加数据头插尾插特定位置插入删除数据头删尾删特定位置删除顺序表查找顺序表修改 顺序表概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 顺序表一般可分为: 静态顺序表:使用定长数组存储元素 动态顺序表:使用动态开辟的数组存储 两者的结构区别如下图: 现实中,静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不原创 2021-10-09 17:00:26 · 3102 阅读 · 32 评论 -
数据结构初章——时间复杂度与空间复杂度
文章目录算法效率算法的复杂度时间复杂度大O的渐进表示方法常见时间复杂度计算举例复杂度对比空间复杂度 算法效率 算法效率主要涉及两种,即时间效率与空间效率;而时间效率在算法中是以时间复杂度来表示,空间效率在算法中是以空间复杂度来表示,接下来就来介绍一下复杂度。 算法的复杂度 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。 时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额原创 2021-09-28 23:42:39 · 410 阅读 · 22 评论