- 博客(159)
- 收藏
- 关注
原创 11、C++算法之代码随想录(二叉树)——二叉树的所有路径
求二叉树到叶子节点的所有路径,可以使用前序遍历再加上回溯来进行求解。中序遍历可以获得从根节点到叶子结点的路径,回溯可以将走过的路径删除,防止重复。参数及返回类型:参数——当前节点、存储走过的路径容器、存储结果的字符串容器。返回类型为void。终止条件:节点的左右子节点都为空时。将当前路径转换存入到结果容器中。1.构造递归函数三要素。参数及返回类型,终止条件和迭代逻辑。迭代逻辑:前序遍历加回溯。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。
2025-05-04 10:42:24
244
原创 10、C++算法之代码随想录(二叉树)——平衡二叉树
采用递归法,计算每一个节点对应的左右子树的高度以及差值,如果大于1就直接返回-1,最后返回二叉树的高度。只要返回值不是-1的都是二叉平衡树。4.迭代逻辑:计算当前节点的左右子树的高度,然后比较高度差,大于1返回-1,否者返回高度。1.构建递归函数的三要素,参数以及返回类型,终止条件、迭代逻辑。2.参数为当前节点,返回类型为int。给定一个二叉树,判断它是否是 平衡二叉树。3.终止条件为节点为空。
2025-05-04 09:46:24
143
原创 9、C++算法之代码随想录(二叉树)——完全二叉树的节点个数
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。第二种:按照完全二叉树的特性,找到左右子树的满二叉树,然后按照2^h(二叉树深度)-1计算满二叉树的个数。第一种:按照普通二叉树的方法。直接遍历二叉树,定义个变量用来存储节点的数量。参数为根节点,返回类型为void。3.判断子树是否为满二叉树。2.终止条件为节点为空。层(从第 0 层开始),则该层包含。(3)解题流程(第二种方法),求出该树的节点个数。
2025-05-03 11:13:15
191
原创 8、C++算法之代码随想录(二叉树)——二叉树的最小深度
与求二叉树的最大深度类似,依然使用递归法(后序遍历)。但递归逻辑存在区别,需要额外判断左右子树是否存在。3.判断左右子树是否存在,如果不存在,返回另一个子树的最小深度+1。1.定义递归函数,参数为根节点,返回类型为int。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。4.返回左右子树的最小深度并加1。2.终止条件为节点为空。给定一个二叉树,找出其最小深度。叶子节点是指没有子节点的节点。
2025-05-03 10:10:37
210
原创 7、C++算法之代码随想录(二叉树)——二叉树的最大深度
3、确定递归逻辑为:取迭代层数的最大值(迭代层数就代表深度),并加1(当前层)。3.递归获取左子树和右子树取它们递归层数的最大值并加1。1.按照递归的三要素创建递归函数。函数类型为int,参数为根节点。1、确定递归函数类型及参数,函数类型为int。层序遍历,只需要记录层数即可。是指从根节点到最远叶子节点的最长路径上的节点数。2、确定终止条件为节点为空。2.节点为空时返回0。
2025-05-02 13:25:42
237
原创 6、C++算法之代码随想录(二叉树)——对称二叉树
一个二叉树是否轴对称,需要对比左子树与右子树的外侧节点和内侧节点。节点对比分两种情况,一种是节点不存在,另一只则是都存在并且值相等。除了这两种情况,其他情况都是不对称的。因此,可以采用递归的方法,逐层遍历,如果有不满足上面两种情况的,直接返回false。参数为左右子树的根节点。返回值为bool类型。2.终止条件是只要不满足上面两种条件的直接返回fasle。3.递归左子树与右子树的外侧和内侧,取与操作(&&)。给你一个二叉树的根节点。, 检查它是否轴对称。
2025-05-02 12:49:39
159
原创 5、C++算法之代码随想录(二叉树)——翻转二叉树
翻转二叉树,就是交换两个子节点,那么可以用递归法,逐层开始交换。1.确定参数和返回类型,参数只需要一个节点,返回类型没有要求,直接为void。1.定义交换函数,用于交换两个节点。2.判断节点是否为空,为空直接返回。2.确定截止条件,节点为空时返回。3.函数逻辑:就是交换两个子节点。4.先递归左边,在递归右边。,翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。
2025-05-01 11:10:59
284
原创 4、C++算法之代码随想录(二叉树)——二叉树的层序遍历
根据队列先进先出的特性,顺序遍历二叉树,将根节点存入,然后取出,将子节点存入。和广度搜索的思路是类似的。5.获取队列的大小(不能直接使用size函数,因为它是动态变化的),循环获取队列元素。循环次数为队列的大小,保证每次获取一层的元素。6.将队列元素存入到临时容器,并将节点的子节点存入队列。7.将临时容器存入结果容器,然后临时容器清空。1.定义一个结果容器、临时容器和队列。2.判断根节点是否为空,为空直接返回。4.进入循环,循环终止条件为队列为空。(即逐层地,从左到右访问所有节点)。3.将根节点插入队列。
2025-04-30 11:17:33
316
原创 3、C++算法之代码随想录(二叉树)——二叉树的统一迭代法
这两种方法还是有一定难度的,没有递归代码那么简洁。详细内容看代码随想录。将要访问的节点放入栈中,同时将要处理的节点也放入栈中但要进行标记。二叉树的前、中、后序遍历。使用迭代的方法进行遍历。以中序遍历为例分别用这两种方法进行实现。
2025-04-29 16:14:38
114
原创 2、C++算法之代码随想录(二叉树)——二叉树的递归遍历
由于要对二叉树进行遍历并返回遍历结果,那么需要两个参数,一个参数是二叉树根节点,另一个参数是存储元素的容器。3.确定递归函数的逻辑。前序遍历整个二叉树,每层的逻辑应该是先将根元素存入容器,然后找左子结点的元素存入容器,再找右子节点的元素存入容器。那些参数在递归过程中需要用到,就在函数参数中加上,并且要明确递归函数的返回值类型。确定递归函数在什么时候应该终止,,没有终止条件递归函数会一直运行下去知到出现错误。3.确定递归函数的逻辑:确定递归函数每层应该处理的信息。以前序遍历为例,按照上面的思路编写递归函数。
2025-04-29 15:26:57
194
原创 7、C++算法之代码随想录(栈和队列)——前K个高频元素
首先遍历整个数组,记录每个元素出现的频率。可以用unordered_map容器实现。然后如何找到前K个高频元素。这样当队列元素大于k时,可以将出现频率最小的元素移除,从而保证最后队列中的元素出现次数时最高的。将这K个元素返回即可。3.定义个优先队列(小堆顶),这里要自定义比较函数。4.遍历整个map容器,将键值对存入优先队列,如果队列元素大于K,将堆顶元素移除。1.记录元素的频率。3.找到前k个高频元素。2.遍历整个数组,记录每个元素出现的频率。6.将这K个元素的值存入到数组,返回。5.定义个数组容器。
2025-04-27 12:52:10
123
原创 6、C++算法之代码随想录(栈和队列)——滑动窗口最大值
使用队列来存储窗口中的元素,随着窗口移动,队列元素也不断插入和移除。然后每次寻找队列的最大值。如何用线性的时间解决该问题,就需要使用到单调队列,将窗口的最大值维护在队列首。主要是插入、移除和返回队列首元素三个功能。这道题是使用单调队列的经典题目,单调队列并不是固定的。不同的题有不同的写法。只需要保证队列是单调递增或递减的即可。插入:如果插入元素大于队列尾元素,就删除队尾元素。移除:如果移除的元素等于当前队首元素,才移除,否则不进行移除。的滑动窗口从数组的最左侧移动到数组的最右侧。返回:返回队首元素。
2025-04-26 17:03:30
279
原创 5、C++算法之代码随想录(栈和队列)——逆波兰表达式求值
遍历整个字符串,如果碰到运算符号,将运算符之前的两个元素执行对应的操作并存储起来(就近匹配)。那么是不是可以用栈来存储数据。碰到运算符,从栈中弹出两个元素,计算后再存入到栈中。3.如果遍历到运算符号,从栈中弹出两个元素,执行对应的操作并存入栈中。否者就将元素存入栈中。(两个元素的顺序别搞反了)该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。返回一个表示表达式值的整数。1.创建一个栈用来存储数据。2.遍历整个字符串。
2025-04-25 11:15:31
151
原创 4、C++算法之代码随想录(栈和队列)——删除字符串中的所有相邻重复项
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。2.遍历字符串,如果栈为空,或栈顶元素不等于当前字符串元素。否则就移除栈顶元素(栈顶元素等于当前字符串元素)。消除相同的相邻元素,可以用栈来记录遍历过的元素。就近匹配,如果相邻的元素相同的就移除。最后返回栈中剩余的元素。在完成所有重复项删除操作后返回最终的字符串。
2025-04-24 18:06:56
158
原创 3、C++算法之代码随想录(栈和队列)——有效的括号
这道题就是判断字符串中的三种括号是否配对,。括号配对遵循就近匹配的原则。所以需要用到栈的特性。遍历字符串,将括号的做半部分存储到栈中,然后如果有右半部分括号与栈顶的元素匹配,就将栈顶元素移除。如果存在不相等的,那就说明不能配对成功。最后看栈中的元素是否清空。4.如果栈为空或栈顶元素与对应的括号不匹配。直接返回false。3.如果元素为左括号,就在栈中存入相应的右括号。5.返回栈是否为空。,判断字符串是否有效。
2025-04-23 22:02:11
182
原创 2、C++算法之代码随想录(栈和队列)——用队列实现栈
需要用到两个队列,一个用于输出,另一个用于辅助存储。例如:返回栈顶元素时,先将输出队列的前n-1个元素存储到存储队列中,然后将输出队列的元素返回。再将存储队列的数据重新存储到输出队列中。2.pop()函数。将输出队列的前n-1个元素存储到存储队列中,然后将最后一个元素输出,删除。然后再将存储队列的元素重新存储到输出队列中。与pop函数类似,但是最后一个元素输出后不删除,重新存储到队列中。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(直接返回输出队列的empty()函数。
2025-04-23 18:25:45
218
原创 1、C++算法之代码随想录(栈和队列)——用栈实现队列
这道题用栈模拟队列。首先需要掌握栈和队列的特性,一个先进后出,一个先进先出。然后使用两个栈进行模拟即可。3.peek()函数。如果输出栈为空,先将输入栈的数据存储到输出栈,然后返回栈顶元素即可。4.pop()函数。在peek()函数的基础上,将输出栈的栈顶元素删除即可。5.empty()函数。判断输入栈和输出栈都是否为空即可。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(1.创建两个栈,一个用于输入,一个用于输出。将元素添加到输入栈即可。
2025-04-22 22:48:40
219
原创 7、C++算法之代码随想录(字符串)——重复的子字符串
创建next数组,如果是由重复字符串组成。那么next数组的最后一个元素值一定是重复字符串的n-1倍。那么只需要字符串长度对剩余字符串求余数即可判断是否为重复字符串组成。第二种:移动匹配,将两个字符串进行拼接,然后移除首尾,如果其中还包含有字符串。则说明是由重复字符串组成。可由子串 "abc" 重复四次构成。(或子串 "abcabc" 重复两次构成。使用两个for循环来确定重复子串。1.判断特殊情况,例如字符串长度为0。,检查是否可以通过由它的一个子串重复多次构成。可由子串 "ab" 重复两次构成。
2025-04-22 15:52:20
369
原创 6、C++算法之代码随想录(字符串)——实现strStr()(KMP)
KMP算法是一种用于字符串匹配的高效算法。其核心思想是——利用已匹配的部分信息,通过一个部分匹配表(next数组),从而避免不必要的回溯。6.如果匹配字符串到达最后,说明匹配成功,用文本字符串下标减去匹配字符串长度再加1。4.遍历文本字符串,如果存在文本字符串与匹配字符串不相等的就回溯。"leeto" 没有在 "leetcode" 中出现,所以返回 -1。1.将一些特殊情况排除,例如字符串为0的情况。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。
2025-04-21 17:39:57
947
原创 5、C++算法之代码随想录(字符串)——右旋字符串
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。第二种:不使用额外空间,先反转整个字符串,再将k个字符和剩余部分分别反转即可。输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。第一种:使用额外空间,直接将最后k个字符截取,然后拼接到字符串前面即可。输出共一行,为进行了右旋转操作后的字符串。4.反转前k个字符串。
2025-04-21 10:40:39
438
原创 4、C++算法之代码随想录(字符串)——反转字符串中的单词
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。先将字符串中多于的空格去除。3.将每个单词再反转回来,每个单词用空格隔开,找到空格,然后将单词翻转即可。将空格去除完毕后,反转整个字符串。将整个字符串反转后,再将每个单词再反转回来即可。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。1.去除多余的空格。反转后的字符串中不能存在前导空格和尾随空格。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。
2025-04-20 22:13:58
398
原创 3、C++算法之代码随想录(字符串)——替换数字
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。找到输入字符串的数字个数,然后创建一个新的大小的字符串,然后从两个字符串的最后开始往前填入字符,遇到数字,就替换成number。5.判断字符串是否为数字,如果是就往新的字符串存入number。3.创建新的字符串。1.创建输入字符串,替换的字符串和一个统计数字出现次数的变量。
2025-04-20 18:03:15
341
原创 2、C++算法之代码随想录(字符串)——反转字符串II
截取长度为k的字符串。然后判断需不需要翻转,然后再拼接成一个新的字符串,返回即可。2.进入循环,每次截取k个字符。5.结束循环,返回结果字符串。1.定义个字符串存储结果。3.判断是否需要翻转。4.存储到结果字符串。,从字符串开头算起,每计数至。
2025-04-20 12:59:59
287
原创 1、C++算法之代码随想录(字符串)——反转字符串
第一种:字符串中有直接反转字符串的库函数,直接调用就可以解决问题。但在算法题中不推荐使用这种库函数。定义两个指针,left和right,不断移动两个指针并交换元素。2.进入循环,交换元素(可以使用swap函数,也可以自己写),移动指针。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。1.定义两个指针left和right。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。
2025-04-19 17:37:42
343
原创 9、C++算法之代码随想录(哈希表)——四数之和
5.进入双指针循环。一个左指针,一个右指针。判断四个数的和与target的大小关系移动。相等就存储到结果数组中。这道题的解法与三数之和是类似的。只不过是再多加一层循环和一些判断条件。具体的可以看代码随想录或之前的三数之和的博客。3.第一层for循环。(剪枝部分可以不写,主要是为了提高效率)4.第二层for循环。先进行剪枝与查重判断。2.定义一个存储结果的数组。请你找出并返回满足下述全部条件且。1.对数组进行排序。
2025-04-19 16:43:26
222
原创 8、C++算法之代码随想录(哈希表)——三数之和
如果nums[i]+nums[left]+nums[right]大于0,right--。如果nums[i]+nums[left]+nums[right]<0,left++。如果nums[i]+nums[left]+nums[right]==0,将结果存储到容器中,去重。将数据进行排序,定义三个指针,固定一个指针,移动另外两个指针。如果三指针和大于0 右指针左移,如果小于0左指针右移。如果等于0就存储到数组中,然后去重,左右指针同时移动。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。
2025-04-19 10:39:50
328
原创 7、C++算法之代码随想录(哈希表)——赎金信
并且每个字符只能使用一次。可以使用暴力法两层for循环解决。也可以采用哈希表进行,将。4.如果出现负数,说明不满足,返回false。遍历完返回true。1.定义个unordered_map容器。直接返回false。的字符和对应的次数存储到哈希表中,遍历。字符串,减去当前字符在容器中的次数。字符串,存储到容器中。
2025-04-18 20:40:13
179
原创 6、C++算法之代码随想录(哈希表)——四数相加II
求四个数组中和为0的元组,可以直接遍历求和。因此可分成两组,时间复杂度就降为O(n^2)。定义一个哈希表存储前两个数组和的值与出现的次数。再遍历后两个数组的和,如果在表中找到相反数就累加出现的次数即可,最后返回总的出现次数。(可以看做是两个数组求和的升级版,但思路是一样的)。3.遍历后两个数组的和,查找在哈希表中查找相反数是否存在。2.遍历前两个数组的和,将值和出现次数存储到哈希表中。4.如果存在,将对应的出现次数累加,最后返回总次数。1.定义一个哈希表和一个变量。,请你计算有多少个元组。
2025-04-18 19:20:17
308
原创 5、C++算法之代码随想录(哈希表)——两数之和
在数组中找到和为target的两个元素,返回下标。单层循环,在遍历的同时,将元素与对应的下标存储在哈希表中,将加法换算成减法,固定一个元素找另一个元素。如果能在哈希表中查到,返回对应的下标即可。若不存在,就将元素和下标存储到哈希表中。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。2.遍历整个数组,计算target与当前元素的差值。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。5.遍历完都没有满足的元素,返回空。整数,并返回它们的数组下标。
2025-04-18 11:26:07
276
原创 4、C++算法之代码随想录(哈希表)——快乐数
力扣——编写一个算法来判断一个数n是不是快乐数。如果n是快乐数就返回true;不是,则返回false。
2025-04-18 10:38:41
283
原创 3、C++算法之代码随想录(哈希表)——两个数组的交集
求两个数组的交集,即两个数组中的共同元素。可以将其中一个数组值存储到哈希表中,然后通过哈希表查找另一个数组中的是否出现了该元素。但应该使用哪种哈希结构呢,根据问题可知,数组中元素是可以重复的,但交集中的元素是唯一,因此在存储中,需要将重复的元素删除,那么最合适的就是unordered_set。其中很重要的一个特性就是元素不能重复。4.如果出现,将该元素存储到vector中,并在unordered_set中删除该元素。1.创建一个unordered_set<int>容器和一个vector<int>容器。
2025-04-17 22:28:44
196
原创 2、C++算法之代码随想录(哈希表)——有效的字母异位词
采用哈希表来记录s中每个字母出现的次数,然后在t中逐一减去,最后遍历哈希表中的值,如果存在不为0的数,就说明两个字符串不是字母异位词。常的用三种哈希结构——数组、set和map都可以。本题由于数据范围是固定的,即a-z26个字母。如果数据范围不固定,采用后两种结构。2.遍历s字符串,记录对应字母出现的次数。(将a-z映射到0-25,只需要减去‘a’即可)4.遍历数组,如果有不为0的值,返回false。1.定义一个大小为26的数组。3.遍历t字符串,减去对应字母出现的次数。,编写一个函数来判断。
2025-04-17 21:59:43
318
原创 1、C++算法之代码随想录(哈希表)——理论基础
哈希表(英文名字为Hash table)是一种根据关键码的值而直接进行访问的数据结构。例如数组就可以看做是哈希表,根据下标可以直接访问数组中的元素。特点:索引值->存储数据当我们遇到在集合中快速查找元素时,就可以考虑哈希法。但是哈希法是牺牲空间换取时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。更多详细内容看代码随想录。
2025-04-17 18:59:43
671
原创 8、C++算法之代码随想录(链表)——环形链表II
在遍历链表时,使用一个unordered_map容器用来存储节点对应的bool类型的值。当链表中存在环的时候,移动到环的入口节点时,这个节点对应的bool值为true。结论是在头节点和快慢指针相遇节点处分别定义一个指针,两个指针同时移动,指针交点处就是环的入口节点。3.遍历链表,如果节点对应的bool值为true,直接返回,否则将该节点对应的bool值赋值为true。链表中有一个环,其尾部连接到第二个节点。,返回链表开始入环的第一个节点。,仅仅是为了标识链表的实际情况。,则在该链表中没有环。
2025-04-16 21:03:11
616
原创 7、C++算法之代码随想录(链表)——链表相交
找两个链表的相交节点,两个链表的长度不同,但如果两个链表相交,相交部分长度却是相同的。因此,可以将两个链表的头节点移动到相同的位置(找到长链表,移动长链表直到与短链表长度相同),然后同时往后移动,如果相交,两个节点的地址就相等,返回该节点即可。4.同时移动两个节点,如果存在节点相同(这里是判断地址,不是判断它们存储的值和指针),直接返回该节点。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。
2025-04-16 17:00:44
266
原创 6、C++算法之代码随想录(链表)——删除链表的倒数第N个节点
删除倒数第n个节点,由于并不知道链表的长度,因此无法转换成顺序的。那么可以采用双指针进行求解,将两个指针之间的距离设置为n(删除节点需要用它的前一个节点)。然后同时移动这两个指针,当其中一个到达末尾时,另一个指针指向的位置就是倒数第n+1个节点。然后删除第n个节点即可。2.创建两个指针fast和slow都指向虚拟头节点。4.同时移动slow和fast,直到fast到尾部。1.创建虚拟头节点(不用对头节点进行额外讨论)。5.删除slow的下一个节点。3.将fast移动n。个结点,并且返回链表的头结点。
2025-04-15 22:28:21
270
原创 5、C++算法之代码随想录(链表)——两两交换链表中的节点
推荐用虚拟头节点,避免对头节点的额外讨论。交换节点,实际上就是改变节点的指针指向。(但本题解法采用临时节点来进行交换,这种方式不需要注意交换顺序)。4.创建三个临时节点temp1 = cur->next;给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。3.开始遍历链表,循环条件是下个节点和下下个节点不为空。(进行交换最少得有两个节点,所以需要满足两个节点不为空)2.创建虚拟头节点,以及一个用于遍历链表的节点。
2025-04-15 15:45:33
399
原创 4、C++算法之代码随想录(链表)——反转链表
用temp节点存储cur->next。然后将cur->next = pre。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL。第一种:重新定义个链表,然后将反转链表存储到新链表中。第二种:在原链表中修改节点的指针指向,采用双指针法来实现。2.定义两个节点pre=nullptr和cur = head和一个temp节点。4.移动pre节点和cur节点。1.判断头节点是否为空,如果为空直接返回nullptr。主要难点就是两个节点的反转以及双指针的移动。
2025-04-14 10:59:21
289
原创 3、C++算法之代码随想录(链表)——创建链表
然后循环找到index的前一个节点。将前一个节点指向新节点,新节点再指向第index个节点。7.编写deleteAtIndex(index),首先判断index的值是否在0-size-1内,然后循环找到第index个节点,然后将前一个节点直接执行index的下一个节点。其中包含了链表的各种操作。4.编写addAtHead(val),首先创建新节点,然后将新节点指向原头结点,在将虚拟头结点指向新节点。5.编写addAtTail(val),创建新节点,然后遍历链表知道尾部,将链表最后的节点指向新节点即可。
2025-04-13 23:06:04
378
空空如也
使用Qpainter绘制一张图片,鼠标移动到按键会自动触发paintEvent事件?
2025-01-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人