C数据结构
文章平均质量分 75
基于C语言的数据结构
微笑的高圆圆圆圆
You'll never be alone
展开
-
链式二叉树及其相关操作
/定义二叉树结点 typedef int BTDataType;} BTNode;原创 2023-01-02 19:00:44 · 237 阅读 · 0 评论 -
队列的实现及相关操作
/定义队列链表的结点 typedef struct QListNode {} QNode;//定义队列 typedef struct Queue {int size;} Queue;主体结构是,这是我们定义的队列,由指向头尾结点的两个指针和队列长度三个要素组成//在单链表中是没有这个结构体的。在这里存在的意义是队列需要头尾两个指针,所以就定义了这个结构体。单链表中只要指向头结点的指针即可指向头尾结点的指针,分别用于实现头删和尾插这里size存在的意义是:以空间换时间。原创 2022-11-24 20:39:15 · 371 阅读 · 1 评论 -
栈的实现及相关操作
/栈的容量 int top;//表示指向栈顶元素的下一个位置 } ST;这里和顺序表不同的是,这里没有size来表示栈的有效长度。取而代之的是top。原创 2022-11-24 20:38:09 · 478 阅读 · 0 评论 -
带头双向循环链表相关操作
带头双向循环链表相关操作原创 2022-11-12 11:11:42 · 152 阅读 · 0 评论 -
详细讲解算法的时空复杂度
而这里的函数栈帧并不会因为新的函数栈帧的开辟而销毁上一次开辟的,因为每一次递归,两个函数栈帧之间是有联系的,如果将某层栈帧销毁后,那么下面的函数将无法完成“归”的操作。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但其实右侧的递归调用所开辟的函数栈帧是与左侧的函数栈帧是相同的,也就是说两侧所用的空间是相同的。在数据结构的时间复杂度计算中,只有以2为底的,可以忽略底数。衡量一个算法的好坏,看的不是代码的简洁程度,而是算法的效率,即算法的复杂度。原创 2022-10-29 10:53:05 · 1426 阅读 · 0 评论 -
【力扣题目讲解】原地删除数组中指定项
对上面的输出做一个解释:函数应该返回新的长度3,新nums中的前三个元素是0,3,2。并且,这三个元素可以为任意顺序,而且你不需要考虑数组中超出新长度后面的元素。你不需要考虑数组中超出新长度后面的元素。那么我们该任何实现原地删除数组值呢?的元素,并返回移除后数组的新长度。要求空间复杂度为O(1)原创 2022-11-03 15:17:51 · 159 阅读 · 0 评论 -
【力扣原题讲解】原地删除数组中的重复项
请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度,元素的相对顺序应该保持 一致。这里对上面的输出进行解释:函数应该返回的新长度为3,并且原数组nums的前三个元素被修改为1,2,3.看过我写的“原地删除数组指定项”那篇博客的同学,应该晓得这里还可以从另一个角度去看,即令。看过我写的“原地删除数组指定项”那篇博客的同学,应该晓得这里还可以从另一个角度去看,即令。其实这题和之前的“原地删除数组指定项”的解题思路差不多,方法都是。对“原地删除数组指定项”这题陌生的可以看我之前的博客。原创 2022-11-03 16:52:36 · 353 阅读 · 0 评论 -
【力扣原题讲解】合并两个有序数组成为一个新有序数组
以前我们做过类似的合并数组的题目,那时我们会开辟一个新空间,两个数组相互比较,将较小项依次放入新数组,最后输出新数组。而这里的话,我们采取一个更加巧妙的方法,不用开辟额外空间。具体思路是这样的:这里我们不能通过两个数组比较,将较小值放在。中,使合并后的数组同样按非递减顺序排列。但是我们可以反过来,先将较大值放在。给你两个按非递减顺序排列的整数数组。注意:由于最终的合并数组是。个元素表示应合并的元素,后。的前面,这有可能会覆盖了。个元素为 0,应忽略。原创 2022-11-03 17:32:21 · 228 阅读 · 0 评论 -
翻转单链表
思路:新建一个链表,并将原链表的结点依次头插进来。,请你反转链表,并返回反转后的链表。原创 2022-11-07 18:54:47 · 128 阅读 · 0 评论