自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 备战蓝桥 2020-1-3

目录动态规划不同路径1.DP解法2.DFS(会超时)3.数论的方法不同路径II整数拆分今日复习代码动态规划不同路径不同路径这题其实并没有很难,在昨天刷了几道基础dp题之后,很快就做出来了,只不过中间有个初始化要小心一下。不过这道题最应该收获的,应该是其他两种做法。1.DP解法 int dp[101][101]={0}; //dp数组表示到达dp[i][j],即从起点到(i,j)有多少路径 //第二步:状态转移方程:dp[i][j]=dp[i-1][j]+dp[i][j-

2022-01-03 16:04:36 1906 3

原创 备战蓝桥 2022-1-2

目录动态规划斐波那契数思路爬楼梯使用最小花费爬楼梯二级目录三级目录动态规划网上有很多讲动态规划的文章,鱼龙混杂,所以作者在这里就不再多赘述了,推荐一篇觉得写动态规划写的比较好的文章,动态规划理论基础斐波那契数斐波那契数思路这是一道大家刚刚接触c语言时都写过的题目,相信大家那时基本都是用递归的方法来写的,但递归的复杂度一般都很高,这道题为O(2^N),显然在算法比赛中这种写法是不适用的。 /* 递归的写法 if(n==0) {

2022-01-03 13:30:54 895

原创 备战蓝桥 2021-12-31

目录二分查找题目思路移除元素题目思路带分数题目二分查找题目思路这道题就是一道很简单的二分查找,但也有我们很多要注意的地方,区间的划分最为关键。其实区间划分的问题,一般我们有两种区间划分的方法,1,[left,right-1] 2,[left,right) ,这两种划分是等价的,其次你还要搞明白,[right,right]这个区间是有意思的,因为你可以取到right这个位置的值,而[right,right)这个区间是没有意义的,因为你取不到right这个地方的值。当你明白了这几个点了之后,区间

2022-01-02 14:04:05 3124 7

原创 递归与递推(辅导课总结) 2021-12-29

目录递推Acwing 95. 费解的开关题目思路注意点代码Acwing717.简单斐波那契题目最多的写法(递归)递推优化递归Acwing92. 递归实现指数型枚举解法:dfs(属于递归的一种)y总遍历的顺序递归图解分析代码随想录的遍历顺序Acwing94. 递归实现排列型枚举解法:dfs(其实和上一题差不多)递推Acwing 95. 费解的开关题目思路这题的大概思路有两个:dfs和递推。 如果使用dfs来做的话,可能会超时。下面我们看看递推的大致思路:首先我们这道题的目的是让每个灯都变亮,我

2021-12-29 18:28:23 635

原创 停更阶段学习算法题的一些总结

目录一星题快速排序归并排序高精度加法高精度乘法前缀和子矩阵的和(二维数组的前缀和)二星题目单链表(数组模拟实现)双链表(数组实现)模拟栈模拟队列单调栈滑动窗口(单调队列)KMP算法Trie字符串统计三级目录一星题快速排序题目链接:快速排序其实这道题在停更之前的八大排序中已经涉及过了,下面来看看y总的代码。#include <iostream>using namespace std;const int N = 100010;int q[N];void quick_s

2021-11-10 08:19:23 410 1

原创 字符串匹配问题(BF,KMP)

文章目录BF算法代码实现BF算法BF的全称为Brute Force,所以BF算法又叫做暴力算法。下面我们来看看BF算法解决字符串匹配问题的一个例子,相信看完之后,BF算法解决此问题中的难点你就明白了。其实BF算法解决字符串匹配问题是很简单的,比较让人难以理解的就是他的返回值i-j+1和为什么最后打印i-j,在图中已经将此问题说的很清楚了。代码实现#include<iostream>#include<assert.h>#include<string.h>

2021-10-03 14:34:17 413 4

原创 算法基础——用数组模拟实现单链表和双向链表

这里写目录标题铺垫基本思想初始化向头节点插入在任意节点之后插入一个x删除任意位置之后的一个节点题目代码实现铺垫在学这个之前,小伙伴们最好先要了解下如何用结构体形成单链表,因为如果理解了那个,这儿就很好理解了,不懂得小伙伴可以去看看博主之前的文章。带你重温单链表很多小伙伴可能会好奇?结构体形成单链表玩的好好的,为什么要用数组来玩了?其实这就要涉及到效率的问题了,如果用之前的方法,在C++中我们每创建一个节点,就要new一下,如果单链表很长,那么会很消耗时间,有时在面试题中甚至都过不了,因为new消耗的时

2021-10-01 15:17:50 758 19

原创 C++类和对象(万字总结)(建议收藏!!!)

文章目录面向过程和面向对象初步认识类的引入类的定义类的两种定义方法1.声明和定义全部放在类体中2. 声明放在.h文件中,类的定义放在.cpp文件中类的访问限定符及封装访问限定符封装类的作用域类的实例化类对象模型如何计算类对象的大小类对象的存储方式this 指针this指针的引出this指针的特性类的6个默认成员函数构造函数构造函数的特性析构函数特性拷贝构造函数特性运算符重载==运算符重载= 运算符重载const修饰成员函数再谈构造函数构造函数体赋值初始化列表注意事项1.每个成员变量在初始化列表中只能出现一次

2021-09-27 21:04:56 9182 65

原创 C++入门基础(万字总结)(建议收藏!!!)

文章目录什么是C++C++的发展史C++关键字命名空间命名空间的定义1.命名空间的普通定义2.命名空间可以嵌套3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。命名空间使用1.加命名空间名称及作用域限定符2.使用using namespace 命名空间名称引入3.使用using将命名空间中的成员引入C++中的输入和输出缺省参数全缺省半缺省参数函数重载函数重载的原理extern “C”引用引用的特征1.引用在定义时必须初始化2.一个变量可以有多个引用3.引用一旦引用了一个实体

2021-09-22 22:57:02 257568 206

原创 八大排序 (万字总结)(详细解析,建议收藏!!!)

文章目录直接插入排序代码实现复杂度的计算希尔排序希尔排序的预排序代码实现选择排序代码实现堆排序冒泡排序代码实现快速排序递归实现Hoare版本代码实现递归图解挖坑法代码实现递归图解前后指针法代码实现递归图解非递归实现Hoare版本挖坑法前后指针法非递归快排代码实现图解代码快速排序的两个优化1.三数取中代码实现2.小区间的优化代码实现归并排序递归实现递归图解区间划分要注意(死递归)非递归实现代码实现递归图解计数排序绝对映射和相对映射代码实现八大排序性能测试???? 注:以下排序都是以排升序为例。直接插入

2021-09-18 16:38:10 17099 74

原创 排序算法学习(2)(快速排序,归并排序,计数排序)(详细解析,建议收藏!!!)

文章目录快速排序递归实现Hoare版本代码实现递归图解挖坑法代码实现递归图解前后指针法代码实现递归图解非递归实现Hoare版本挖坑法前后指针法非递归快排代码实现图解代码快速排序的两个优化1.三数取中快速排序快速排序是公认的排序之王,其基本思想为: 任取待排序元素序列中的某元素作为基准值,按照该基准值将待排序列分为两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后左右序列重复该过程,直到所有元素都排列在相应位置上为止。对于如何按照基准值将待排序列分为两子序列,常见的方式

2021-09-18 15:45:14 1778 4

原创 排序算法学习(1)(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)

文章目录直接插入排序代码实现复杂度的计算希尔排序希尔排序的预排序代码实现选择排序代码实现堆排序冒泡排序代码实现???? 注:以下排序都是以排升序为例。直接插入排序直接插入排序的主要思路就是:1.首先默认第一个元素是有序的。2.然后将其下一个元素作为待排序的元素,插入到前面有序序列的相应位置。至于插入的过程,如果遇到比待排序大的元素,则这个元素后移,直到遇到比其小的元素,然后将待插入元素放入其前一个位置。代码实现void Insertsort(int *a, int sz){ i

2021-09-12 15:01:32 1274 57

原创 二叉树初阶OJ题(内附递归图解,思路)(建议收藏!!!)

文章目录1.单值二叉树解题思路代码实现图解递归2.二叉树的最大深度解题思路代码实现图解递归3.翻转二叉树解题思路思路1:代码实现思路2:代码实现图解递归解法1递归分析解法二图解递归4.对称二叉树解题思路代码实现图解递归5.两个树是否相同解题思路代码实现图解递归6.二叉树的前序遍历解题思路代码实现7.二叉树的遍历及构建解题思路代码实现图解递归8.平衡二叉树解题思路解题思路1:代码实现解题思路2:代码实现图解递归解法一图解递归解法二图解递归9.另一棵树的子树解题思路代码实现1.单值二叉树解题思路1.判

2021-09-10 11:58:02 937 64

原创 二叉树之结点相关操作

文章目录结点的个数代码实现叶子结点的个数代码实现第k层结点的个数结点的个数求解树的结点总数时,可以将问题拆解成子问题:1.若为空,则结点个数为0。2.若不为空,则结点个数 = 左子树结点个数 + 右子树结点个数 + 1(自己)。代码实现int BinaryTreeSize(BT* root){ //结点个数 = 左子树的结点个数 + 右子树的结点个数 + 自己 return root == NULL ? 0 : BinaryTreeSize(root->left) + Binar

2021-09-08 09:55:17 802 12

原创 不经意之间的Bug(1):有些编译器可能在某些情况下无法识别typedef定义的标识符

文章目录如何发现这个bug的解决方法用原生类型if哪怕只有一句话时也加上括号把所要用的变量定义在函数块的最前面总结如何发现这个bug的在前几天在写一个问题的代码:找二叉树中值为x的结点,并返回。下面来看看当时写的代码。BT* BinaryTreeFind(BT* root,BTDataType x){ if (root == NULL) return NULL; if (root->x == x) return root; BT* ansleft = BinaryTre

2021-09-08 09:51:19 1594 20

原创 带你图解二叉树的多种递归遍历(建议收藏!!)

文章目录二叉树的构建结点类型的定义构建二叉树之间的关系深度优先遍历前序遍历代码实现图解递归(由于图片大小问题,建议用手机客户端查看,以下图解也是)中序遍历代码实现图解递归后序遍历代码实现图解递归广度优先遍历层序遍历代码实现二叉树的构建为了实现二叉树的遍历,我们要先构建一个二叉树,这里就先简单构建一个。结点类型的定义既然是链式二叉树,那必须得有自己的结点类型,以下是链式二叉树结点类型的定义typedef char BTDataType;typedef struct BinaryNode{

2021-09-05 16:16:37 6760 50

原创 Topk问题的三种求解方法

Topk问题的三种求解方法什么是Topk问题方法一:堆排序法方法二:把N个数建堆,取出前k个方法三:建一个k个数的堆什么是Topk问题其实顾名思义,这个问题也就是在N个数中找出前k个最值。在我们的日常生活中,很多地方都有Topk问题的影子,例如我们在点外卖时,总会说这家店是某某市的多少名,其实这些都是用Topk问题的解决方法得出来的。方法一:堆排序法这也是最容易想到的一种方法:我们可以将N个数排成有序的,然后输出前k个最值,而在我们已学过的排序算法中,堆排序的时间复杂度又是最快的(O(n*lo

2021-09-02 17:11:50 5905 41

原创 关于堆的知识

堆排序什么是堆堆的向下排序算法代码实现如何对无规律的数组进行堆的向下排序代码实现建堆的时间复杂度堆排序代码实现什么是堆可能概念讲的不是很好理解,下面我们看两幅图。那么问题来了?我们给的一组数据总不可能就那么巧吧,正好是有序的。这时就要介绍一个算法了:堆的向下排序算法。使一组不是那么有规律的数字也变成堆。堆的向下排序算法int array[] = {27,15,19,18,28,34,65,49,25,37};从这组数据中你能发现什么特点吗?也不难发现,这组数据除了根节点,左右子

2021-09-02 11:08:03 882 19

原创 C语言重点篇:详解程序环境和预处理

C语言重点篇:详解程序环境和预处理程序环境翻译环境编译预编译编译汇编链接执行环境(运行环境)预编译(预处理)预定义符号#define定义标识符#define定义宏#define定义的规则#和##的用法宏参数的副作用宏和函数的对比命名约定#undef命令行定义条件编译文件包含程序环境大家是否想过从我们编写的代码到最后在屏幕上打印的结果,这中间都经历了些什么了?其实,在ANSI C(标准C)的任何一种实现中,都存在两个不同的环境,即翻译环境和执行环境。翻译环境,在这个环境中,代码被转换为可执行的机器指

2021-08-25 19:00:39 803 45

原创 C语言重点篇:近万字总结文件操作函数

C语言重点篇:近万字总结文件操作函数铺垫知识什么是文件文件名文件类型文件缓冲区文件缓冲系统为什么存在文件缓冲区文件指针相对路径和绝对路径文件的打开方式文件操作函数(顺序读写的)字符输入输出函数fputcfgetc文本行输入输出函数fputsfgets格式化输入输出函数fprintffscanf二进制输入输出函数fwritefread顺序读写的弊端文件操作函数(随机读写)fseekftellrewind利用fseek和ftell求一个文件的大小文件的结束判定这个问题你是否思考过?ferrorfeofferro

2021-08-23 17:57:47 768 47

原创 【每天学习亿点点系列】——栈和队列OJ题

????【每天学习亿点点系列】——栈和队列OJ题1.用队列实现栈图解代码实现2.用栈实现队列图解代码实现这两题的对比3.循环队列用数组还是链表实现注意点1.如果判断为空还是为满了?2.注意索引越界的问题解决方法代码实现1.用队列实现栈图解既然要用两个队列实现栈,那就肯定会跟队列的性质有关系,肯定是来回换来换去,下面我们就来看看这个过程。代码实现typedef struct { Queue* q1; Queue* q2;} MyStack;/** Initialize

2021-08-22 13:57:04 503 19

原创 【每天学习亿点点系列】——栈OJ题:有效的括号

????【每天学习亿点点系列】——栈OJ题:有效的括号题目解决思路代码实现图解代码段题目解决思路第一次做这个题目时肯定是没有思路的,也不会想栈的方向去想,但当你有了一定经验以后,你会发现它比配时有些符合栈的特点,它后进先出的特点正好可以帮助我们完成这一题:利用栈的特点,我们遇到数组中的左括号就入栈,直到此时它遇到第一个右括号,那么出栈顶的数据,此时不正是出的距离刚刚那个右括号离的最近的括号吗,如果比配的话,就继续迭代下去。代码实现至于这个代码里面栈的实现,就不放在这篇博客里了,不熟练的可以

2021-08-19 16:54:56 275 13

原创 【每天学习亿点点系列】——重温栈和队列

【每天学习亿点点系列】——重温栈和队列????【每天学习亿点点系列】——重温栈和队列栈的实现顺序表实现栈头文件以及测试部分代码各个接口的实现1.初始化2.栈的插入3.栈的删除4.栈顶取出数据5.栈里面元素的打印6.记录栈中元素个数7.判空8.栈的销毁单链表实现头文件以及测试部分代码各个接口的实现1.栈的插入2.栈里面元素的打印3.删除栈顶的节点4.取出栈顶的数据5.判空6.记录栈中元素个数7.销毁队列单链表(没有用结构体包裹)来实现头文件以及测试部分各个接口的实现1.队列的插入2.出队列3.删除4.判空5.

2021-08-19 16:51:53 201 9

原创 【每天学习亿点点系列】——单链表OJ题

????【每天学习亿点点系列】——单链表OJ题1. 链表的回文结构题目方法一:翻转后半段,与前半段对比代码实现方法二:数组法(不推荐)代码实现2.相交链表题目解决方法代码实现3.环形链表解决方法代码实现1. 链表的回文结构题目方法一:翻转后半段,与前半段对比如果在你写完链表寻找中间节点,和链表翻转后再来写这题,就选的很轻松,因为这就是那两题的考察。你想想是不是,如果你找到中间节点,再翻转一下后半部分,与前半部分一对比,如果都相等则是回文。代码实现/*struct ListNode {

2021-08-17 21:16:07 256 6

原创 【每天学习亿点点系列】——环形链表这些点你思考过吗?

????【每天学习亿点点系列】——环形链表这些点你思考过吗?题目证明方法一:利用证明的猜想来实现代码实现代码二:转化为两个链表找相交节点的问题代码实现题目在写这题之前,最好先要知道如果判断一个链表是不是环形链表,如果它都不是环形链表就更谈不上找入环节点了,至于这一点,读者可以看看我之前的博客,里面有讲解过然后判断。证明要想更快的解决这题,首先我们要正面一个猜想,证明过程如下:方法一:利用证明的猜想来实现代码实现Node* slow = head; Node* fas

2021-08-17 21:15:30 194 12

原创 【每天学习亿点点系列】——重温双向带头循环链表

????【每天学习亿点点系列】——重温双向带头循环链表头文件以及测试文件的实现各个接口的实现1.初始化2.创建节点3.尾插4.头插5.尾删6.头删7.打印8.查找9在任意位置之后插入10.在任意位置之前插入11.记录节点个数12.在任意位置之后删除13.在任意位置之前删除14.删除当前位置15.判空16.销毁注意点1.双向链表要初始化这个接口的,不同与单链表2.带个哨兵位,解决插入的问题3.注意赋值时的先后顺序4.删除时要把节点free掉,同时要注意写法5.判空与以往不同,因为有哨兵位6.不要像释放顺序表一

2021-08-17 21:14:44 876 8

原创 【每天学习亿点点系列】——单链表OJ题

????【每天学习亿点点系列】——单链表OJ题1.反转单链表题目方法一:原地改变原链表的指向代码实现方法二:头插法图解头插法代码实现方法三:递归代码实现2. 链表中间节点题目方法一:记录总共多少个节点,然后找到它的一半的那个节点实现代码方法二:快慢指针代码实现1.反转单链表题目方法一:原地改变原链表的指向这种方法很容易理解,实现也比较方便,只需要用三个指针,分别为前一个位置,当前位置,后一个位置来完成就可以实现代码实现struct ListNode* reverseList(struct

2021-08-16 21:45:29 662 16

原创 【每天学习亿点点系列】——重温单链表

????【每天学习亿点点系列】——重温单链表头文件以及测试部分的代码单链表各个接口的实现1.尾插2.尾删3.打印4.头插5.头删6.查找7.在任意位置之前插入8.在任意位置之后插入9.删除当前位置10.删除任意位置的前一个节点11.删除任意位置的后一个节点12.销毁13.判空注意点1.单链表的实现方式里面不能用一级指针接收的方式来实现也不可能做的到2.单链表不需要初始化这个接口3.尾节点如何解决的问题(悬疑问题)4. free时注意函数之间可能会有影响(悬疑问题)5.很多接口都要注意分类讨论头文件以及测试

2021-08-14 20:18:36 636 18

原创 【每天学习亿点点系列】——OJ203题:移除链表元素

????【每天学习亿点点系列】——OJ203题:移除链表元素题目思路代码实现注意点1. 不要以为cur就是head节点反例2.特殊情况找第一个不为val节点时当nnext为空指针时,不能再对它访问了3.在你找第一个不为val的节点时要一起移动题目思路有了前面顺序表和oj题的练习,像这种题一看三指针一定可以解决。我们用三个指针:pre记录当前位置的前一个位置的,以便删除当前位置后重新连起来链表;cur记录当前位置,判断是否为val的值,是则删除节点,不是则往后移动(一起往后移动);nnext(为了不

2021-08-14 20:18:08 570 10

原创 【每天学习亿点点系列】——重温顺序表

????【每天学习亿点点系列】——重温顺序表头文件,以及测试部分的代码顺序表各个接口的功能实现1.初始化2.尾插3.打印4.尾删5.头插6.头删7.判空8.查找9.在任意位置之前插入10.在任意位置之后插入11.在任意位置之前删除12.在任意位置之后删除13.销毁注意点1.有删除的接口不要忘记断言是否为空2.注意元素移动,防止覆盖3.整形提升的问题头文件,以及测试部分的代码我首先先把头文件(函数的声明,以及结构体的定义),测试部分的代码亮出来,以便下面看各个部分具体实现的时候更加清晰。SeqLis

2021-08-13 19:39:41 153 6

原创 七夕节限定——单身狗问题(送给七夕依然单身的你们)

????【每天学习亿点点系列】——七夕节:单身狗问题单身狗问题解决思路代码实现回头再看题单身狗问题马上要过七夕节了,不知道各位小伙伴是已经有约了?还是继续和代码做伴了?下面我们来看看这个单身狗问题:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。如果想解决这个问题其实有很多方法,今天我们在这里介绍一种比较巧妙的方法:异或。解决思路找出一个只出现过一次的数字的问题处理方法就是找一个数字把里面所有的数字都异或一遍,利用异或两次等于没异或

2021-08-13 19:38:45 302

原创 【每天学习亿点点系列】——重温动态通讯录

????【每天学习亿点点系列】——重温动态通讯录实现部分需要注意的地方1. 不要轻易用size2.传参一定要注意3.其实很多通讯录的这个接口都是有问题的,你知道吗?悬念问题由于之前已经写过一次通讯录了,这次正好遇到一个写通讯录的题目,抱着看看自己是否还能独立写出来的疑问,又重温了一下通讯录实现部分contact.h#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>#include&

2021-08-12 20:50:33 7378 4

原创 自定义类型(结构体,位段,联合体,枚举)的这些知识点你都知道吗?

结构体,联合体大小的的计算结构体大小的计算结构体的内存对齐嵌套结构体的计算位段什么是位段位段大小的计算联合体什么是联合体联合体大小的计算枚举什么是枚举枚举的定义枚举的优点枚举的使用结构体大小的计算结构体的内存对齐下面通过几个题目,说明白上面几点。struct A{ int a; short b; int c; char d;};struct B{ int a; short b; char c; int d;};你知道如何计算这两个结构体的大小吗?下面来看看

2021-08-12 12:02:33 598 3

原创 【每天学习亿点点系列】——常见库函数的模拟实现

????【每天学习亿点点系列】——常见库函数的模拟实现1.strlen做什么用的模拟实现方法一:计算器的方式方法二:递归方法三:指针减指针2.strcpy做什么用的模拟实现方法一:逐个赋值过去优化方法一3.strcmp做什么用的模拟实现4.strcat做什么用的模拟实现这段bug你找的出来吗?原因及解决方法5.strstr做什么用的模拟实现三指针法6.memcpy做什么用的模拟实现7.memmove做什么用的模拟实现1.strlen做什么用的这时就要翻看MSDN了,在里面可以查到每个库函数的具体用法

2021-08-11 23:35:03 323 19

原创 【每天学习亿点点系列】——杨氏矩阵,字符串左旋,字符串旋转结果

????【每天学习亿点点系列】——杨氏矩阵,字符串左旋,字符串旋转结果题1.杨氏矩阵解决思路代码实现题2.字符串左旋解决思路方法一:逐个左旋代码实现方法二:拼接法代码实现方法三:三次逆序法代码实现题目3.字符串旋转结果解决思路方法一:利用方法二来实现代码实现方法二:重复法(题目二也可以利用此方法解决)代码实现题1.杨氏矩阵有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。要求:时间复杂度小于O(n)解决思路下面是一个杨氏矩阵:如

2021-08-10 17:12:51 344 12

原创 队列实现的这些细节你都注意到了吗?

????队列实现的这些细节你都注意到了吗?????队列的实现代码这些细节你都注意到了吗?队列的实现代码Queue.h#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>typedef int QDataType;typedef struct Node{ QDataType dat

2021-08-06 16:57:18 193

原创 ⭐顺序表和链表的这些细节你都注意到了吗?⭐

⭐顺序表和链表的这些细节你都注意到了吗?⭐顺序表的细节单链表的细节双向带头循环链表的细节栈的细节几者之间的对比链接这几种数据结构完整的代码,都在我其他的博客里面,这篇博客主要的目的是分析其各自的一些细节,以及他们之间的一些对比的顺序表的细节????初始化void SeqListinit(SLT * ps1){ assert(ps1); //写这些断言的好处是万一错了他会报错,这儿还调试,下面的所有断言都是这个目的 ps1->size

2021-08-05 18:03:32 568 14

原创 ⭐栈的多种实现,这样传参是否可以实现了?

⭐栈的多种实现方式,这样传参是否可以实现了?顺序表实现单向链表实现这样传参可以实现吗?顺序表实现Stack.h#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>//用顺序表来实现栈typedef int STDataType;typedef struct Stack{ STDa

2021-08-05 17:42:41 483 11

原创 双向带头循环链表的实现

双向带头循环链表的实现为什么要有双向带头循环链表代码实现部分(细节在代码的注释中有标注)总结和思考为什么要有双向带头循环链表在之前的一篇博客中,我们写了单链表,发现如果要在某一位置插入或删除一个数据,会比较复杂,而这其中最根本的一个原因就是这个链表是单向的,它无法直接记录前面一个节点的位置,而双向带头循环链表就可以解决这个问题.但他也有自己的缺点,就是结构相对于其他7种链表是最复杂的一种。至于结构这儿就不陈述了,不懂得小白可以去自己了解下。代码实现部分(细节在代码的注释中有标注)List.h#de

2021-08-03 17:51:09 199 2

原创 数据结构OJ题——移除链表元素

数据结构OJ题——移除链表元素方法一:在原链表的基础上遍历方法二:重新创建一个空链表,进行尾插总结对比方法一:在原链表的基础上遍历struct ListNode* removeElements(struct ListNode* head, int val){ while (head != NULL && head->val == val) { head = head->next; } if (hea

2021-08-02 11:47:26 578 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除